Repository: kibae/onnxruntime-server
Branch: main
Commit: 60c55b0b7b90
Files: 97
Total size: 3.0 MB
Directory structure:
gitextract_clwri4nw/
├── .clang-format
├── .github/
│ ├── actions/
│ │ ├── download-onnxruntime-linux.sh
│ │ ├── download-onnxruntime-osx.sh
│ │ └── download-onnxruntime-windows.sh
│ ├── cache/
│ │ └── dependencies-apt/
│ │ └── .gitkeep
│ ├── dependabot.yml
│ └── workflows/
│ ├── cmake-linux.yml
│ ├── cmake-macos.yml
│ ├── cmake-windows.yml
│ └── codeql.yml
├── .gitignore
├── CMakeLists.txt
├── LICENSE
├── README.md
├── cmake/
│ └── FindONNXRuntime.cmake
├── deploy/
│ ├── build-docker/
│ │ ├── README.md
│ │ ├── VERSION
│ │ ├── build.sh
│ │ ├── docker-compose.yaml
│ │ ├── docker-image-test.sh
│ │ ├── download-onnxruntime.sh
│ │ ├── linux-cpu.dockerfile
│ │ ├── linux-cuda12.dockerfile
│ │ └── linux-cuda13.dockerfile
│ └── update-version.sh
├── docs/
│ ├── docker.md
│ └── swagger/
│ ├── index.css
│ ├── index.html
│ ├── openapi.yaml
│ ├── swagger-ui-bundle.js
│ ├── swagger-ui-standalone-preset.js
│ └── swagger-ui.css
├── download-onnxruntime-linux.sh
├── src/
│ ├── CMakeLists.txt
│ ├── onnx/
│ │ ├── cuda/
│ │ │ ├── session_options.cpp
│ │ │ └── session_options.hpp
│ │ ├── execution/
│ │ │ ├── context.cpp
│ │ │ └── input_value.cpp
│ │ ├── providers.cpp
│ │ ├── session.cpp
│ │ ├── session_key.cpp
│ │ ├── session_key_with_option.cpp
│ │ ├── session_manager.cpp
│ │ ├── value_info.cpp
│ │ └── version.cpp
│ ├── onnxruntime_server.hpp
│ ├── standalone/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── model_bin_getter.hpp
│ │ ├── standalone.cpp
│ │ └── standalone.hpp
│ ├── task/
│ │ ├── create_session.cpp
│ │ ├── destroy_session.cpp
│ │ ├── execute_session.cpp
│ │ ├── get_session.cpp
│ │ ├── list_session.cpp
│ │ └── task.cpp
│ ├── test/
│ │ ├── CMakeLists.txt
│ │ ├── e2e/
│ │ │ ├── e2e_test_http_server.cpp
│ │ │ ├── e2e_test_http_swagger.cpp
│ │ │ ├── e2e_test_https_server.cpp
│ │ │ └── e2e_test_tcp_server.cpp
│ │ ├── test_common.hpp
│ │ ├── test_lib_version.cpp
│ │ └── unit/
│ │ ├── unit_test_context.cpp
│ │ ├── unit_test_context_cuda.cpp
│ │ └── unit_test_session.cpp
│ ├── thread_pool.hpp
│ ├── transport/
│ │ ├── http/
│ │ │ ├── http_server.cpp
│ │ │ ├── http_server.hpp
│ │ │ ├── http_session.cpp
│ │ │ ├── http_session_base.cpp
│ │ │ ├── https_server.cpp
│ │ │ ├── https_session.cpp
│ │ │ ├── swagger/
│ │ │ │ ├── document_bin_data.h
│ │ │ │ ├── generate_swagger.sh
│ │ │ │ ├── swagger_index_html.cpp
│ │ │ │ └── swagger_openapi_yaml.cpp
│ │ │ └── swagger_serve.cpp
│ │ ├── server.cpp
│ │ └── tcp/
│ │ ├── tcp_server.hpp
│ │ └── tcp_session.cpp
│ └── utils/
│ ├── aixlog.hpp
│ ├── exceptions.hpp
│ ├── json.hpp
│ └── windows.h
└── test/
├── fixture/
│ ├── download-test-fixtures.sh
│ └── sample/
│ ├── 1/
│ │ └── README.md
│ └── 2/
│ └── README.md
├── http/
│ ├── http-client.env.json
│ └── http_test.http
├── sample-onnx-generator/
│ ├── requirements.txt
│ ├── sample-model1.py
│ └── website_classification.py
└── ssl/
├── server-cert.pem
├── server-csr.pem
└── server-key.pem
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: BlockIndent
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BitFieldColonSpacing: Both
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterExternBlock: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakAfterAttributes: Never
BreakAfterJavaFieldAnnotations: false
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeColon
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: true
InsertTrailingCommas: None
IntegerLiteralSeparator:
Binary: 0
BinaryMinDigits: 0
Decimal: 0
DecimalMinDigits: 0
Hex: 0
HexMinDigits: 0
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
LambdaBodyIndentation: Signature
LineEnding: DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Always
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
AfterRequiresInClause: false
AfterRequiresInExpression: false
BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Latest
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseTab: Always
WhitespaceSensitiveMacros:
- BOOST_PP_STRINGIZE
- CF_SWIFT_NAME
- NS_SWIFT_NAME
- PP_STRINGIZE
- STRINGIZE
...
================================================
FILE: .github/actions/download-onnxruntime-linux.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
echo
echo "Select onnxruntime version to download:"
AUTH_HEADER=""
if [ -n "$GITHUB_TOKEN" ]; then
AUTH_HEADER="-H \"Authorization: Bearer $GITHUB_TOKEN\""
fi
RAW_LIST=$(eval curl -s -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
$AUTH_HEADER \
https://api.github.com/repos/microsoft/onnxruntime/releases/latest \
| grep browser_download_url \
| grep -E "onnxruntime-linux-x64-([.0-9]+)tgz" \
| awk '{print $2}' \
| tr -d '"')
item=${RAW_LIST[0]}
FILENAME=$(basename "$item")
echo
echo "Downloading $item"
echo
wget -q "$item"
sudo mkdir -p /usr/local/onnxruntime
sudo tar vzxf "$FILENAME" -C /usr/local/onnxruntime --strip-components=1
sudo sh -c 'echo "/usr/local/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf'
sudo ldconfig
rm -f "$FILENAME"
echo
echo "Done"
echo
================================================
FILE: .github/actions/download-onnxruntime-osx.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
echo
echo "Select onnxruntime version to download:"
AUTH_HEADER=""
if [ -n "$GITHUB_TOKEN" ]; then
AUTH_HEADER="-H \"Authorization: Bearer $GITHUB_TOKEN\""
fi
RAW_LIST=$(eval curl -s -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
$AUTH_HEADER \
https://api.github.com/repos/microsoft/onnxruntime/releases/latest \
| grep browser_download_url \
| grep -E "onnxruntime-osx-arm64-([.0-9]+)tgz" \
| awk '{print $2}' \
| tr -d '"')
item=${RAW_LIST[0]}
# check item is not empty
if [ -z "$item" ]; then
echo "Error: Could not find onnxruntime download link."
exit 1
fi
FILENAME=$(basename "$item")
echo
echo "Downloading $item"
echo
wget -q "$item"
sudo mkdir -p /usr/local/onnxruntime
sudo tar vzxf "$FILENAME" -C /usr/local/onnxruntime --strip-components=2
rm -f "$FILENAME"
echo
echo "Done"
echo
exit 0
================================================
FILE: .github/actions/download-onnxruntime-windows.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
echo
echo "Select onnxruntime version to download:"
RAW_LIST=$(curl -s -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/microsoft/onnxruntime/releases/latest \
| grep browser_download_url \
| grep -E "onnxruntime-win-x64-([.0-9]+)zip" \
| awk '{print $2}' \
| tr -d '"')
item=${RAW_LIST[0]}
FILENAME=$(basename "$item")
DIRNAME="${FILENAME%.zip}"
echo
echo "Downloading $item"
echo
curl -q --output "$FILENAME" -L "$item"
unzip "$FILENAME"
mv ${DIRNAME} C:/msys64/usr/local/onnxruntime
ls -al C:/msys64/usr/local/onnxruntime
rm -f "$FILENAME"
echo
echo "Done"
echo
================================================
FILE: .github/cache/dependencies-apt/.gitkeep
================================================
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
version: 2
updates:
- package-ecosystem: "cmake" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
================================================
FILE: .github/workflows/cmake-linux.yml
================================================
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on Linux
permissions:
contents: read
pull-requests: write
on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]
jobs:
prepare-asset:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: (Cache) Restore test fixtures
id: cache-test-fixtures
uses: actions/cache/restore@v5
with:
path: test/fixture
key: test-fixtures-v1
lookup-only: true
- name: Download assets(models)
if: steps.cache-test-fixtures.outputs.cache-hit != 'true'
shell: bash
run: |
./test/fixture/download-test-fixtures.sh
- name: (Cache) Save test fixtures
if: steps.cache-test-fixtures.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: test/fixture
key: test-fixtures-v1
prepare-apt:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, ubuntu-24.04 ]
build_type: [ Debug ]
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: (Cache) Restore dependencies(apt)
id: cache-dependencies-apt
uses: actions/cache/restore@v5
with:
path: .github/cache/dependencies-apt
key: ${{ matrix.os }}-dependencies-apt-v1
lookup-only: true
- name: Prepare container(apt download)
shell: bash
if: steps.cache-dependencies-apt.outputs.cache-hit != 'true' && (startsWith(matrix.os, 'debian-') || startsWith(matrix.os, 'ubuntu-'))
run: |
cat /etc/os-release
sudo apt-get update -qq
sudo apt-get install -yq --download-only build-essential clang cmake libboost-all-dev libssl-dev libgtest-dev
cp /var/cache/apt/archives/*.deb .github/cache/dependencies-apt/
- name: (Cache) Save dependencies(apt)
if: steps.cache-dependencies-apt.outputs.cache-hit != 'true' && (startsWith(matrix.os, 'debian-') || startsWith(matrix.os, 'ubuntu-'))
uses: actions/cache/save@v5
with:
path: .github/cache/dependencies-apt
key: ${{ matrix.os }}-dependencies-apt-v1
build:
runs-on: ${{ matrix.os }}
needs: [ "prepare-asset", "prepare-apt" ]
strategy:
fail-fast: false
matrix:
os: [ ubuntu-22.04, ubuntu-24.04 ]
c_compiler: [ gcc, clang ]
build_type: [ Debug ]
include:
- c_compiler: gcc
cpp_compiler: g++
- c_compiler: clang
cpp_compiler: clang++
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: (Cache) Restore dependencies(apt)
id: cache-dependencies-apt
uses: actions/cache/restore@v5
with:
path: .github/cache/dependencies-apt
key: ${{ matrix.os }}-dependencies-apt-v1
fail-on-cache-miss: true
- name: Prepare container(apt)
shell: bash
if: startsWith(matrix.os, 'debian-') || startsWith(matrix.os, 'ubuntu-')
run: |
cat /etc/os-release
sudo dpkg -i .github/cache/dependencies-apt/*.deb
- name: Prepare container(onnxruntime)
shell: bash
run: |
./.github/actions/download-onnxruntime-linux.sh
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-S ${{ github.workspace }}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --parallel 4
- name: (Cache) Restore test fixtures
uses: actions/cache/restore@v5
with:
path: test/fixture
key: test-fixtures-v1
fail-on-cache-miss: true
- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --extra-verbose --build-config ${{ matrix.build_type }}
================================================
FILE: .github/workflows/cmake-macos.yml
================================================
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on MacOS
permissions:
contents: read
pull-requests: write
on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]
jobs:
build:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ macos-latest ]
build_type: [ Debug ]
c_compiler: [ clang ]
include:
- c_compiler: clang
cpp_compiler: clang++
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: Prepare container(homebrew)
shell: bash
run: |
brew update
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake boost openssl googletest
./.github/actions/download-onnxruntime-osx.sh || HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install onnxruntime
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-S ${{ github.workspace }}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --parallel 4
- name: (Cache) Restore test fixtures
uses: actions/cache/restore@v5
with:
path: test/fixture
key: test-fixtures-v1
fail-on-cache-miss: true
- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --extra-verbose --build-config ${{ matrix.build_type }}
================================================
FILE: .github/workflows/cmake-windows.yml
================================================
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: CMake on Windows
permissions:
contents: read
pull-requests: write
on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]
jobs:
prepare-asset:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: (Cache) Restore test fixtures
id: cache-test-fixtures
uses: actions/cache/restore@v5
with:
path: test/fixture
key: test-fixtures-windows-v1
lookup-only: true
- name: Download assets(models)
if: steps.cache-test-fixtures.outputs.cache-hit != 'true'
shell: bash
run: |
./test/fixture/download-test-fixtures.sh
- name: (Cache) Save test fixtures
if: steps.cache-test-fixtures.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: test/fixture
key: test-fixtures-windows-v1
prepare-vcpkg:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
runs-on: windows-latest
steps:
- name: (Cache) Restore vcpkg cache
id: cache-windows-vcpkg
uses: actions/cache/restore@v5
with:
path: C:\vcpkg\installed
key: windows-vcpkg-v4
lookup-only: true
- name: Install dependencies with vcpkg
if: steps.cache-windows-vcpkg.outputs.cache-hit != 'true'
run: |
C:\vcpkg\vcpkg.exe install boost-serialization boost-system boost-filesystem boost-program-options boost-thread boost-asio boost-beast gtest
- name: (Cache) Save vcpkg cache
if: steps.cache-windows-vcpkg.outputs.cache-hit != 'true'
uses: actions/cache/save@v5
with:
path: C:\vcpkg\installed
key: windows-vcpkg-v4
build:
needs: [ "prepare-asset", "prepare-vcpkg" ]
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
build_type: [ Debug ]
steps:
- uses: actions/checkout@v6
with:
lfs: false
- name: (Cache) Restore vcpkg cache
id: cache-windows-vcpkg
uses: actions/cache/restore@v5
with:
path: C:\vcpkg\installed
key: windows-vcpkg-v4
fail-on-cache-miss: true
- name: Install dependencies with MSYS2
run: |
C:\msys64\usr\bin\pacman.exe -S --noconfirm mingw-w64-x86_64-pkg-config
- name: Prepare container(onnxruntime)
shell: bash
run: |
./.github/actions/download-onnxruntime-windows.sh
- name: Set reusable strings
# Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file.
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DPKG_CONFIG_EXECUTABLE:FILEPATH=C:/msys64/mingw64/bin/pkg-config.exe
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
-DVCPKG_FEATURE_FLAGS=binarycaching
-S ${{ github.workspace }}
- name: Build
# Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} --parallel 4
- name: (Cache) Restore test fixtures
uses: actions/cache/restore@v5
with:
path: test/fixture
key: test-fixtures-windows-v1
fail-on-cache-miss: true
- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --extra-verbose --build-config ${{ matrix.build_type }}
================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '18 0 * * 3'
jobs:
analyze:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'documentation') }}
name: Analyze (${{ matrix.language }})
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
permissions:
# required for all workflows
security-events: write
# required to fetch internal or private CodeQL packs
packages: read
# only required for workflows in private repositories
actions: read
contents: read
strategy:
fail-fast: false
matrix:
include:
- language: c-cpp
build-mode: autobuild
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Prepare container(onnxruntime)
if: runner.os == 'Linux'
shell: bash
run: |
./.github/actions/download-onnxruntime-linux.sh
- name: Prepare container(onnxruntime)
if: runner.os == 'macOS'
shell: bash
run: |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake boost openssl googletest onnxruntime
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
================================================
FILE: .gitignore
================================================
.idea/
.claude/
cmake-build-debug*/
.claude/
CLAUDE.md
*.onnx
build/
Testing/
src/test/gen/
# python
venv/
__pycache__/
*.py[cod]
*$py.class
/deploy/build-docker/out/
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.22.0)
project(onnxruntime_server LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(src)
enable_testing()
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 Kibae Shin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# ONNX Runtime Server
[](https://github.com/microsoft/onnxruntime)
[](https://github.com/kibae/onnxruntime-server/actions/workflows/cmake-linux.yml)
[](https://github.com/kibae/onnxruntime-server/actions/workflows/cmake-macos.yml)
[](https://github.com/kibae/onnxruntime-server/actions/workflows/cmake-windows.yml)
[](https://github.com/kibae/onnxruntime-server/actions/workflows/codeql.yml)
[](https://github.com/kibae/onnxruntime-server/blob/main/LICENSE)
- [ONNX: Open Neural Network Exchange](https://onnx.ai/)
- **The ONNX Runtime Server is a server that provides TCP and HTTP/HTTPS REST APIs for ONNX inference.**
- ONNX Runtime Server aims to provide simple, high-performance ML inference and a good developer experience.
- If you have exported ML models trained in various environments as ONNX files, you can provide inference APIs
without writing additional code or
metadata. [Just place the ONNX files into the directory structure.](#run-the-server)
- Each ONNX session, you can choose to use CPU or CUDA.
- Analyze the input/output of ONNX models to provide type/shape information for your collaborators.
- Built-in Swagger API documentation makes it easy for collaborators to test ML models through the
API. ([API example](https://kibae.github.io/onnxruntime-server/swagger/))
- [Ready-to-run Docker images.](#docker) No build required.
----
- [Build ONNX Runtime Server](#build-onnx-runtime-server)
- [Requirements](#requirements)
- [Install ONNX Runtime](#install-onnx-runtime)
- [Install dependencies](#install-dependencies)
- [Compile and Install](#compile-and-install)
- [Install via a package manager](#install-via-a-package-manager)
- [Run the server](#run-the-server)
- [Docker](#docker)
- [API](#api)
- [How to use](#how-to-use)
----
# Build ONNX Runtime Server
## Requirements
- [ONNX Runtime](https://onnxruntime.ai/)
- [Boost](https://www.boost.org/)
- [CMake](https://cmake.org/), pkg-config
- CUDA(*optional, for Nvidia GPU support*)
- OpenSSL(*optional, for HTTPS*)
----
## Install ONNX Runtime
#### Linux
- Use `download-onnxruntime-linux.sh` script
- This script downloads the latest version of the binary and install to `/usr/local/onnxruntime`.
- Also, add `/usr/local/onnxruntime/lib` to `/etc/ld.so.conf.d/onnxruntime.conf` and run `ldconfig`.
- Or manually download binary from [ONNX Runtime Releases](https://github.com/microsoft/onnxruntime/releases).
#### Mac OS
```shell
brew install onnxruntime
```
----
## Install dependencies
#### Ubuntu/Debian
```shell
sudo apt install cmake pkg-config libboost-all-dev libssl-dev
# optional, for running tests
sudo apt install libgtest-dev
```
##### (optional) CUDA support (CUDA 12.x/13.x, cuDNN 9.x)
- Follow the instructions below to install the CUDA Toolkit and cuDNN.
- [CUDA Toolkit Installation Guide](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)
- [CUDA Download for Ubuntu](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_network)
```shell
# CUDA 12
sudo apt install cuda-toolkit-12 libcudnn9-dev-cuda-12
# CUDA 13
sudo apt install cuda-toolkit-13 libcudnn9-dev-cuda-13
# optional, for Nvidia GPU support with Docker
sudo apt install nvidia-container-toolkit
```
#### Mac OS
```shell
brew install cmake boost openssl
```
----
## Compile and Install
```shell
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
sudo cmake --install build --prefix /usr/local/onnxruntime-server
```
----
# Install via a package manager
| OS | Method | Command |
|------------|--------|-----------------------------|
| Arch Linux | AUR | `yay -S onnxruntime-server` |
----
# Run the server
- **You must enter the path option(`--model-dir`) where the models are located.**
- The onnx model files must be located in the following path:
`${model_dir}/${model_name}/${model_version}/model.onnx` or
`${model_dir}/${model_name}/${model_version}.onnx`
| Files in `--model-dir` | Create session request body | Get/Execute session API URL path (after created) |
|--------------------------------------------------------------------------|-----------------------------------------------------|-------------------------------------------------------|
| `model_name/model_version/model.onnx` or `model_name/model_version.onnx` | `{"model":"model_name", "version":"model_version"}` | `/api/sessions/model_name/model_version` |
| `sample/v1/model.onnx` or `sample/v1.onnx` | `{"model":"sample", "version":"v1"}` | `/api/sessions/sample/v1` |
| `sample/v2/model.onnx` or `sample/v2.onnx` | `{"model":"sample", "version":"v2"}` | `/api/sessions/sample/v2` |
| `other/20200101/model.onnx` or `other/20200101.onnx` | `{"model":"other", "version":"20200101"}` | `/api/sessions/other/20200101` |
- **You need to enable one of the following backends: TCP, HTTP, or HTTPS.**
- If you want to use TCP, you must specify the `--tcp-port` option.
- If you want to use HTTP, you must specify the `--http-port` option.
- If you want to use HTTPS, you must specify the `--https-port`, `--https-cert` and `--https-key` options.
- If you want to use Swagger, you must specify the `--swagger-url-path` option.
- Use the `-h`, `--help` option to see a full list of options.
- **All options can be set as environment variables.** This can be useful when operating in a container like Docker.
- Normally, command-line options are prioritized over environment variables, but if
the `ONNX_SERVER_CONFIG_PRIORITY=env` environment variable exists, environment variables have higher priority.
Within a Docker image, environment variables have higher priority.
## Options
| Option | Environment | Description |
|---------------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `--workers` | `ONNX_SERVER_WORKERS` | Worker thread pool size. Default: `4` |
| `--request-payload-limit` | `ONNX_SERVER_REQUEST_PAYLOAD_LIMIT` | HTTP/HTTPS request payload size limit. Default: 1024 * 1024 * 10(10MB)` |
| `--model-dir` | `ONNX_SERVER_MODEL_DIR` | Model directory path The onnx model files must be located in the following path: `${model_dir}/${model_name}/${model_version}/model.onnx` or `${model_dir}/${model_name}/${model_version}.onnx` Default: `models` |
| `--prepare-model` | `ONNX_SERVER_PREPARE_MODEL` | Pre-create some model sessions at server startup. Format as a space-separated list of `model_name:model_version` or `model_name:model_version(opt1=val1, opt2=val2, ...)`. Option keys may use dotted notation to address nested groups (e.g. `cuda.device_id`, `session_options.intra_op_num_threads`). Repeating the `extensions` key accumulates a deduplicated array. Option entries that do not match the grammar are skipped silently rather than failing the whole list. Examples: - `model1:v1 model2:v9` - `model1:v1(cuda=true) model2:v9(cuda=1)` - `bert:v1(cuda.device_id=0, cuda.gpu_mem_limit=2147483648)` - `bert:v1(session_options.intra_op_num_threads=4, session_options.graph_optimization_level=all)` - `bert:v1(extensions=/usr/local/lib/libortextensions.so)` |
### Backend options
| Option | Environment | Description |
|----------------------|--------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `--tcp-port` | `ONNX_SERVER_TCP_PORT` | Enable TCP backend and which port number to use. |
| `--http-port` | `ONNX_SERVER_HTTP_PORT` | Enable HTTP backend and which port number to use. |
| `--https-port` | `ONNX_SERVER_HTTPS_PORT` | Enable HTTPS backend and which port number to use. |
| `--https-cert` | `ONNX_SERVER_HTTPS_CERT` | SSL Certification file path for HTTPS |
| `--https-key` | `ONNX_SERVER_HTTPS_KEY` | SSL Private key file path for HTTPS |
| `--swagger-url-path` | `ONNX_SERVER_SWAGGER_URL_PATH` | Enable Swagger API document for HTTP/HTTPS backend. This value cannot start with "/api/" and "/health" If not specified, swagger document not provided. eg) /swagger or /api-docs |
### Log options
| Option | Environment | Description |
|---------------------|-------------------------------|-----------------------------------------------------------------------------|
| `--log-level` | `ONNX_SERVER_LOG_LEVEL` | Log level(debug, info, warn, error, fatal) |
| `--log-file` | `ONNX_SERVER_LOG_FILE` | Log file path. If not specified, logs will be printed to stdout. |
| `--access-log-file` | `ONNX_SERVER_ACCESS_LOG_FILE` | Access log file path. If not specified, logs will be printed to stdout. |
----
# Docker
- Docker hub: [kibaes/onnxruntime-server](https://hub.docker.com/r/kibaes/onnxruntime-server)
- [
`1.26.0-linux-cuda13`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cuda13.dockerfile)
amd64(CUDA 13.x, cuDNN 9.x)
- [
`1.26.0-linux-cuda12`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cuda12.dockerfile)
amd64(CUDA 12.x, cuDNN 9.x)
- [
`1.26.0-linux-cpu`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cpu.dockerfile)
amd64, arm64
```shell
DOCKER_IMAGE=kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12 or 1.26.0-linux-cpu
docker pull ${DOCKER_IMAGE}
# simple http backend
docker run --name onnxruntime_server_container -d --rm --gpus all \
-p 80:80 \
-v "/your_model_dir:/app/models" \
-v "/your_log_dir:/app/logs" \
-e "ONNX_SERVER_SWAGGER_URL_PATH=/api-docs" \
${DOCKER_IMAGE}
```
- More information on using Docker images can be found here.
- https://hub.docker.com/r/kibaes/onnxruntime-server
- [docker-compose.yml](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/docker-compose.yaml)
example is available in the repository.
----
# API
- [HTTP/HTTPS REST API](https://github.com/kibae/onnxruntime-server/wiki/REST-API(HTTP-HTTPS))
- API documentation (Swagger) is built in. If you want the server to serve swagger, add
the `--swagger-url-path=/swagger/` option at launch. This must be used with the `--http-port` or `--https-port`
option.
```shell
./onnxruntime_server --model-dir=YOUR_MODEL_DIR --http-port=8080 --swagger-url-path=/api-docs/
```
- After running the server as above, you will be able to access the Swagger UI available
at `http://localhost:8080/api-docs/`.
- [Swagger Sample](https://kibae.github.io/onnxruntime-server/swagger/)
- [TCP API](https://github.com/kibae/onnxruntime-server/wiki/TCP-API)
## ONNXRuntime Extensions Support
To use the [onnxruntime-extensions](https://github.com/microsoft/onnxruntime-extensions) (Custom Ops Library), supply
one or more library paths through the `extensions` array. The server registers each path with ORT in order and
deduplicates entries.
```json
{
"model": "string",
"version": "string",
"option": {
"cuda": ...,
"extensions": [
"/absolute/path/to/libonnxruntime_extensions.so"
]
}
}
```
The legacy `ortextensions_path` (single string) is still accepted for backward compatibility; it is normalized into the
`extensions` array on the server side and the response always echoes the normalized form.
## Session-level options
The optional `session_options` object on a session-create request forwards the listed keys to the underlying
onnxruntime `SessionOptions`. Only the JSON shape (types and our enum-string mapping) is validated on the server side;
the actual value validation is delegated to ORT, and the response echoes only the values ORT accepted.
```json
{
"model": "string",
"version": "string",
"option": {
"session_options": {
"intra_op_num_threads": 4,
"inter_op_num_threads": 1,
"execution_mode": "sequential",
"graph_optimization_level": "all",
"enable_cpu_mem_arena": true,
"enable_mem_pattern": true,
"log_severity_level": 2,
"logid": "my-model",
"enable_profiling": false,
"profile_file_prefix": "/var/log/onnx/profile-",
"optimized_model_filepath": "/cache/optimized.onnx",
"free_dimension_overrides": { "batch": 1 },
"config_entries": {
"session.disable_prepacking": "1"
}
}
}
}
```
`config_entries` is round-tripped through `GetSessionConfigEntry`, so the response shows what ORT actually stored
(string values; `true`/`42` become `"1"`/`"42"`).
## CUDA execution provider options
When CUDA is enabled, the `cuda` field accepts either a boolean / integer (legacy shorthand) or an object that maps to
[CUDA Execution Provider options](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html). The
server forwards the object to ORT via `UpdateCUDAProviderOptions` in a single batched call (per-key calls trigger a
sibling-reset quirk in ORT V2). If any key is rejected by ORT, session creation fails with the ORT error message
identifying the offending key. The response is built from `GetCUDAProviderOptionsAsString` readback, so it reflects
exactly what ORT stored.
```json
{
"model": "string",
"version": "string",
"option": {
"cuda": {
"device_id": 0,
"gpu_mem_limit": 2147483648,
"arena_extend_strategy": "kNextPowerOfTwo",
"cudnn_conv_algo_search": "EXHAUSTIVE",
"cudnn_conv_use_max_workspace": true,
"do_copy_in_default_stream": true,
"enable_cuda_graph": false
}
}
}
```
Backward-compatible shortcuts:
- `"cuda": true` — enable CUDA with all defaults (`device_id=0`).
- `"cuda": 1` — enable CUDA on `device_id=1`.
For more details on the session creation request, please refer to
the [API documentation](https://kibae.github.io/onnxruntime-server/swagger/#/ONNX%20Runtime%20Session/createSession).
----
# How to use
- A few things have been left out to help you get a rough idea of the usage flow.
## Simple usage examples
### Example of creating ONNX sessions at server startup
```mermaid
%%{init: {
'sequence': {'noteAlign': 'left', 'mirrorActors': true}
}}%%
sequenceDiagram
actor A as Administrator
box rgb(0, 0, 0, 0.1) "ONNX Runtime Server"
participant SD as Disk
participant SP as Process
end
actor C as Client
Note right of A: You have 3 models to serve.
A ->> SD: copy model files to disk. "/var/models/model_A/v1/model.onnx" "/var/models/model_A/v2/model.onnx" "/var/models/model_B/20201101/model.onnx"
A ->> SP: Start server with --prepare-model option
activate SP
Note right of A: onnxruntime_server --http-port=8080 --model-path=/var/models --prepare-model="model_A:v1(cuda=0) model_A:v2(cuda=0)"
SP -->> SD: Load model
Note over SD, SP: Load model from "/var/models/model_A/v1/model.onnx"
SD -->> SP: Model binary
activate SP
SP -->> SP: Create onnxruntime session
deactivate SP
deactivate SP
rect rgb(100, 100, 100, 0.3)
Note over SD, C: Execute Session
C ->> SP: Execute session request
activate SP
Note over SP, C: POST /api/sessions/model_A/v1 { "x": [[1], [2], [3]], "y": [[2], [3], [4]], "z": [[3], [4], [5]] }
activate SP
SP -->> SP: Execute onnxruntime session
deactivate SP
SP ->> C: Execute session response
deactivate SP
Note over SP, C: { "output": [ [0.6492120623588562], [0.7610487341880798], [0.8728854656219482] ] }
end
```
### Example of the client creating and running ONNX sessions
```mermaid
%%{init: {
'sequence': {'noteAlign': 'left', 'mirrorActors': true}
}}%%
sequenceDiagram
actor A as Administrator
box rgb(0, 0, 0, 0.1) "ONNX Runtime Server"
participant SD as Disk
participant SP as Process
end
actor C as Client
Note right of A: You have 3 models to serve.
A ->> SD: copy model files to disk. "/var/models/model_A/v1/model.onnx" "/var/models/model_A/v2/model.onnx" "/var/models/model_B/20201101/model.onnx"
A ->> SP: Start server
Note right of A: onnxruntime_server --http-port=8080 --model-path=/var/models
rect rgb(100, 100, 100, 0.3)
Note over SD, C: Create Session
C ->> SP: Create session request
activate SP
Note over SP, C: POST /api/sessions {"model": "model_A", "version": "v1"}
SP -->> SD: Load model
Note over SD, SP: Load model from "/var/models/model_A/v1/model.onnx"
SD -->> SP: Model binary
activate SP
SP -->> SP: Create onnxruntime session
deactivate SP
SP ->> C: Create session response
deactivate SP
Note over SP, C: { "model": "model_A", "version": "v1", "created_at": 1694228106, "execution_count": 0, "last_executed_at": 0, "inputs": { "x": "float32[-1,1]", "y": "float32[-1,1]", "z": "float32[-1,1]" }, "outputs": { "output": "float32[-1,1]" } }
Note right of C: 👌 You can know the type and shape of the input and output.
end
rect rgb(100, 100, 100, 0.3)
Note over SD, C: Execute Session
C ->> SP: Execute session request
activate SP
Note over SP, C: POST /api/sessions/model_A/v1 { "x": [[1], [2], [3]], "y": [[2], [3], [4]], "z": [[3], [4], [5]] }
activate SP
SP -->> SP: Execute onnxruntime session
deactivate SP
SP ->> C: Execute session response
deactivate SP
Note over SP, C: { "output": [ [0.6492120623588562], [0.7610487341880798], [0.8728854656219482] ] }
end
```
## Contributors
================================================
FILE: cmake/FindONNXRuntime.cmake
================================================
message(STATUS "Looking for ONNX Runtime")
set(ONNX_RUNTIME_ROOT_DIR ENV ONNX_ROOT /usr/local/onnxruntime /usr /usr/local /opt/homebrew C:/msys64/usr/local/onnxruntime)
set(ONNX_RUNTIME_INCLUDE_PATHS /usr/local/include/onnxruntime)
set(MACOS_ONNX_RUNTIME_INCLUDE_PATHS /opt/homebrew/include/onnxruntime /opt/homebrew/include/onnxruntime/core/session /usr/local/include/onnxruntime/core/session)
find_path(ONNX_RUNTIME_INCLUDE_DIRS onnxruntime_cxx_api.h PATHS ${ONNX_RUNTIME_ROOT_DIR} ${ONNX_RUNTIME_INCLUDE_PATHS} ${MACOS_ONNX_RUNTIME_INCLUDE_PATHS} PATH_SUFFIXES include include/onnxruntime)
find_library(ONNX_RUNTIME_LIBRARY onnxruntime PATHS ${ONNX_RUNTIME_ROOT_DIR} PATH_SUFFIXES lib)
find_library(ONNX_RUNTIME_CUDA_LIBRARY onnxruntime_providers_cuda PATHS ${ONNX_RUNTIME_LIBRARY} ${ONNX_RUNTIME_ROOT_DIR} PATH_SUFFIXES lib)
if (ONNX_RUNTIME_LIBRARY)
message(STATUS "Found ONNX Runtime include dir: ${ONNX_RUNTIME_INCLUDE_DIRS}")
message(STATUS "Found ONNX Runtime library: ${ONNX_RUNTIME_LIBRARY}")
get_filename_component(ONNX_RUNTIME_LIBRARY_DIRS ${ONNX_RUNTIME_LIBRARY} DIRECTORY)
set(ONNX_RUNTIME_LIBRARY_DIRS "${ONNX_RUNTIME_LIBRARY_DIRS}" CACHE STRING "ONNX Runtime library directory")
message(STATUS "Found ONNX Runtime library dir: ${ONNX_RUNTIME_LIBRARY_DIRS}")
if (ONNX_RUNTIME_CUDA_LIBRARY)
set(ONNX_RUNTIME_WITH_CUDA_PROVIDER TRUE CACHE BOOL "ONNX Runtime with CUDA provider")
set(ONNX_RUNTIME_LIBRARIES ${ONNX_RUNTIME_LIBRARY} ${ONNX_RUNTIME_CUDA_LIBRARY} CACHE STRING "ONNX Runtime libraries")
else ()
set(ONNX_RUNTIME_LIBRARIES ${ONNX_RUNTIME_LIBRARY} CACHE STRING "ONNX Runtime libraries")
endif ()
endif ()
include(FindPackageHandleStandardArgs)
if (ONNX_RUNTIME_WITH_CUDA_PROVIDER)
find_package_handle_standard_args(ONNXRuntime DEFAULT_MSG ONNX_RUNTIME_INCLUDE_DIRS ONNX_RUNTIME_LIBRARY_DIRS ONNX_RUNTIME_LIBRARIES ONNX_RUNTIME_LIBRARY ONNX_RUNTIME_CUDA_LIBRARY)
mark_as_advanced(ONNX_RUNTIME_INCLUDE_DIRS ONNX_RUNTIME_LIBRARY_DIRS ONNX_RUNTIME_LIBRARIES ONNX_RUNTIME_LIBRARY ONNX_RUNTIME_CUDA_LIBRARY)
else ()
find_package_handle_standard_args(ONNXRuntime DEFAULT_MSG ONNX_RUNTIME_INCLUDE_DIRS ONNX_RUNTIME_LIBRARY_DIRS ONNX_RUNTIME_LIBRARIES ONNX_RUNTIME_LIBRARY)
mark_as_advanced(ONNX_RUNTIME_INCLUDE_DIRS ONNX_RUNTIME_LIBRARY_DIRS ONNX_RUNTIME_LIBRARIES ONNX_RUNTIME_LIBRARY)
endif ()
================================================
FILE: deploy/build-docker/README.md
================================================
# Docker Build
## x64 with CUDA
- [ONNX Runtime Binary](https://github.com/microsoft/onnxruntime/releases) v1.26.0(latest) supports CUDA 12/13, cuDNN 9.
- Two CUDA variants are available:
- `linux-cuda13`: Built on `nvidia/cuda:13.1.1-cudnn-devel-ubuntu24.04`, runtime based on `nvidia/cuda:13.1.1-cudnn-runtime-ubuntu24.04`
- `linux-cuda12`: Built on `nvidia/cuda:12.9.1-cudnn-devel-ubuntu24.04`, runtime based on `nvidia/cuda:12.9.1-cudnn-runtime-ubuntu24.04`
- Multi-stage build is used to keep the final image small (devel for building, runtime for the final image).
- **We need to check this for each release of the ONNX Runtime binary.**
================================================
FILE: deploy/build-docker/VERSION
================================================
export VERSION=1.26.0
export IMAGE_PREFIX=kibaes/onnxruntime-server
================================================
FILE: deploy/build-docker/build.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
source ./VERSION
cd ../../
if [ "$1" != "--target=cuda" ]; then
# ______ .______ __ __
# / || _ \ | | | |
# | ,----'| |_) | | | | |
# | | | ___/ | | | |
# | `----.| | | `--' |
# \______|| _| \______/
POSTFIX=linux-cpu
IMAGE_NAME=${IMAGE_PREFIX}:${VERSION}-${POSTFIX}
docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --load . || exit 1
./deploy/build-docker/docker-image-test.sh ${IMAGE_NAME} || exit 1
docker buildx build --platform linux/amd64,linux/arm64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --push . || exit 1
fi
if [ "$1" != "--target=cpu" ]; then
# ______ __ __ _______ ___ ___ ___ __ _ _
# / || | | | | \ / \ \ \ / / / / | || |
# | ,----'| | | | | .--. | / ^ \ _____\ V / / /_ | || |_
# | | | | | | | | | | / /_\ \ |______> < | '_ \ |__ _|
# | `----.| `--' | | '--' | / _____ \ / . \ | (_) | | |
# \______| \______/ |_______/ /__/ \__\ /__/ \__\ \___/ |_|
# POSTFIX=linux-cuda11
# IMAGE_NAME=${IMAGE_PREFIX}:${VERSION}-${POSTFIX}
#
# docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --load . || exit 1
# ./deploy/build-docker/docker-image-test.sh ${IMAGE_NAME} 1 || exit 1
# docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --push . || exit 1
POSTFIX=linux-cuda12
IMAGE_NAME=${IMAGE_PREFIX}:${VERSION}-${POSTFIX}
docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --load . || exit 1
./deploy/build-docker/docker-image-test.sh ${IMAGE_NAME} 1 || exit 1
docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --push . || exit 1
POSTFIX=linux-cuda13
IMAGE_NAME=${IMAGE_PREFIX}:${VERSION}-${POSTFIX}
docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --load . || exit 1
./deploy/build-docker/docker-image-test.sh ${IMAGE_NAME} 1 || exit 1
docker buildx build --platform linux/amd64 -t ${IMAGE_NAME} -f deploy/build-docker/${POSTFIX}.dockerfile --push . || exit 1
fi
================================================
FILE: deploy/build-docker/docker-compose.yaml
================================================
services:
# Available environment variables can be found at
# https://github.com/kibae/onnxruntime-server#run-the-server
onnxruntime_server_simple:
# After the docker container is up, you can use the REST API (http://localhost:8080).
# API documentation will be available at http://localhost:8080/api-docs.
image: kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12
ports:
- "8080:80" # for http backend
volumes:
# for model files
# https://github.com/kibae/onnxruntime-server#run-the-server
- /your_model_dir:/app/models
# for log files
- /your_log_dir:/app/logs
environment:
# for swagger(optional)
- ONNX_SERVER_SWAGGER_URL_PATH=/api-docs
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
onnxruntime_server_advanced:
# After the docker container is up, you can use the REST API (http://localhost, https://localhost).
# API documentation will be available at http://localhost/api-docs.
image: kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12
ports:
- "80:80" # for http backend
- "443:443" # for https backend
- "8001:8001" # for tcp backend. binary protocol
volumes:
# for model files
# https://github.com/kibae/onnxruntime-server#run-the-server
- /your_model_dir:/app/models
# for log files
- /your_log_dir:/app/logs
# for cert files
- /your_cert_dir:/app/certs
environment:
# for https backend
- ONNX_SERVER_HTTPS_PORT=443
# https backend needs cert, key files
- ONNX_SERVER_HTTPS_CERT=/app/certs/cert.pem
- ONNX_SERVER_HTTPS_KEY=/app/certs/key.pem
# for onnx session preparation
- ONNX_SERVER_PREPARE_MODEL="model1:v1(cuda=true) model1:v2(cuda=0) model2:v2"
# for swagger(optional)
- ONNX_SERVER_SWAGGER_URL_PATH=/api-docs
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
================================================
FILE: deploy/build-docker/docker-image-test.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
source ./VERSION
IMAGE_NAME=$1
IS_CUDA=$2
echo
echo '.___________. _______ _______.___________.'
echo '| || ____| / | |'
echo '`---| |----`| |__ | (----`---| |----`'
echo ' | | | __| \ \ | |'
echo ' | | | |____.----) | | |'
echo ' |__| |_______|_______/ |__|'
echo
echo ${IMAGE_NAME}
echo
echo
docker stop docker_test || true
docker rm docker_test || true
docker run --name docker_test -d -p 8080:80 --gpus all -e "ONNX_SERVER_SWAGGER_URL_PATH=/api-docs" ${IMAGE_NAME} || exit 1
sleep 1;
docker cp ../../test/fixture/sample docker_test:/app/models/ || exit 1
API_VERSION_RESULT=$(curl -s \
'http://localhost:8080/api/version' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' || exit 1)
if [ "${API_VERSION_RESULT}" != "${VERSION}" ]; then
echo "API version mismatch. Expected: ${VERSION}, Got: ${API_VERSION_RESULT}"
exit 1
fi
echo "ONNX Server Version: ${VERSION}"
if [[ -v ${IS_CUDA} ]]; then
curl -sX 'POST' \
'http://localhost:8080/api/sessions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"model": "sample", "version": "2", "option":{"cuda": true}}' | jq || exit 1
DEVICE_ID=$(curl -sX 'GET' \
'http://localhost:8080/api/sessions/sample/2' \
-H 'accept: application/json' | jq '.option.cuda.device_id' || exit 1)
if [ "${DEVICE_ID}" != "0" ]; then
echo "CUDA is not available"
exit 1
fi
else
curl -sX 'POST' \
'http://localhost:8080/api/sessions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"model": "sample", "version": "2"}' | jq || exit 1
ERROR=$(curl -sX 'GET' \
'http://localhost:8080/api/sessions/sample/2' \
-H 'accept: application/json' | jq '.error' || exit 1)
if [ "${ERROR}" != "null" ]; then
echo ${ERROR}
exit 1
fi
fi
curl -sX 'POST' \
'http://localhost:8080/api/sessions/sample/2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"input_ids": [
[
101, 11834, 21600, 2102, 9005, 12098, 8566, 5740, 6853, 1999, 1996, 2806, 1997, 15262, 19699, 14663, 1005, 1055,
3203, 8447, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
],
[
101, 3795, 3361, 3422, 16168, 19428, 1997, 1520, 2582, 7860, 1998, 28215, 1521, 3805, 102, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
[
101, 2054, 4511, 2323, 1045, 3288, 2000, 1037, 8179, 2283, 1029, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
],
"onnx::Equal_1": [
[
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
[
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
],
[
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
]
}
' | jq || exit 1
curl -sX 'GET' \
'http://localhost:8080/api/sessions' \
-H 'accept: application/json' | jq || exit 1
echo
echo '.______ ___ _______. _______.'
echo '| _ \ / \ / | / |'
echo '| |_) | / ^ \ | (----` | (----`'
echo '| ___/ / /_\ \ \ \ \ \ '
echo '| | / _____ \ .----) | .----) | '
echo '| _| /__/ \__\ |_______/ |_______/ '
echo
docker rm docker_test -f || true
================================================
FILE: deploy/build-docker/download-onnxruntime.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")" || exit
OS=$1
ARCH=$2
echo
echo "Select onnxruntime version to download:"
RAW_LIST=$(curl -s -H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/microsoft/onnxruntime/releases/latest \
| grep browser_download_url \
| grep -E "onnxruntime-${OS}-${ARCH}-([.0-9]+)tgz" \
| awk '{print $2}' \
| tr -d '"' \
| head -n 1)
item=${RAW_LIST[0]}
FILENAME=$(basename "$item")
echo
echo "Downloading $item"
echo
wget -q "$item"
mkdir -p /usr/local/onnxruntime
tar vzxf "$FILENAME" -C /usr/local/onnxruntime --strip-components=1
sh -c 'echo "/usr/local/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf'
ldconfig
rm -f "$FILENAME"
echo
echo "Done"
echo
================================================
FILE: deploy/build-docker/linux-cpu.dockerfile
================================================
FROM ubuntu:24.04 AS builder
RUN apt update && apt install -y curl wget git build-essential cmake pkg-config libboost-all-dev libssl-dev
RUN mkdir -p /app/source
WORKDIR /app/source
COPY src /app/source/onnxruntime-server
COPY cmake /app/source/onnxruntime-server/cmake
COPY deploy/build-docker/download-onnxruntime.sh /app/source/onnxruntime-server/
WORKDIR /app/source/onnxruntime-server
ARG TARGETPLATFORM
RUN case ${TARGETPLATFORM} in \
"linux/amd64") ./download-onnxruntime.sh linux x64 ;; \
"linux/arm64") ./download-onnxruntime.sh linux aarch64 ;; \
esac
RUN cmake -DBoost_USE_STATIC_LIBS=ON -DOPENSSL_USE_STATIC_LIBS=ON -B build -S . -DCMAKE_BUILD_TYPE=Release
RUN cmake --build build --parallel 8 --target onnxruntime_server_standalone
RUN cmake --install build --prefix /app/onnxruntime-server
# target
FROM ubuntu:24.04 AS target
COPY --from=builder /app/onnxruntime-server /app
COPY --from=builder /usr/local/onnxruntime /usr/local/onnxruntime
WORKDIR /app
RUN mkdir -p models logs certs
ENV ONNX_SERVER_CONFIG_PRIORITY=env
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/onnxruntime/lib
ENTRYPOINT ["/app/bin/onnxruntime_server", "--model-dir", "models", "--log-file", "logs/app.log", "--access-log-file", "logs/access.log", "--tcp-port", "6432", "--http-port", "80"]
================================================
FILE: deploy/build-docker/linux-cuda12.dockerfile
================================================
FROM nvidia/cuda:12.9.1-cudnn-devel-ubuntu24.04 AS builder
RUN apt update && apt install -y curl wget git build-essential cmake pkg-config libboost-all-dev libssl-dev
RUN mkdir -p /app/source
WORKDIR /app/source
COPY src /app/source/onnxruntime-server
COPY cmake /app/source/onnxruntime-server/cmake
COPY deploy/build-docker/download-onnxruntime.sh /app/source/onnxruntime-server/
WORKDIR /app/source/onnxruntime-server
ARG TARGETPLATFORM
RUN case ${TARGETPLATFORM} in \
"linux/amd64") ./download-onnxruntime.sh linux x64-gpu ;; \
esac
RUN cmake -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-12 -DBoost_USE_STATIC_LIBS=ON -DOPENSSL_USE_STATIC_LIBS=ON -B build -S . -DCMAKE_BUILD_TYPE=Release
RUN cmake --build build --parallel 8 --target onnxruntime_server_standalone
RUN cmake --install build --prefix /app/onnxruntime-server
# target
FROM nvidia/cuda:12.9.1-cudnn-runtime-ubuntu24.04 AS target
COPY --from=builder /app/onnxruntime-server /app
COPY --from=builder /usr/local/onnxruntime /usr/local/onnxruntime
WORKDIR /app
RUN mkdir -p models logs certs
ENV ONNX_SERVER_CONFIG_PRIORITY=env
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12/lib64:/usr/local/onnxruntime/lib
ENTRYPOINT ["/app/bin/onnxruntime_server", "--model-dir", "models", "--log-file", "logs/app.log", "--access-log-file", "logs/access.log", "--tcp-port", "6432", "--http-port", "80"]
================================================
FILE: deploy/build-docker/linux-cuda13.dockerfile
================================================
FROM nvidia/cuda:13.1.1-cudnn-devel-ubuntu24.04 AS builder
RUN apt update && apt install -y curl wget git build-essential cmake pkg-config libboost-all-dev libssl-dev
RUN mkdir -p /app/source
WORKDIR /app/source
COPY src /app/source/onnxruntime-server
COPY cmake /app/source/onnxruntime-server/cmake
COPY deploy/build-docker/download-onnxruntime.sh /app/source/onnxruntime-server/
WORKDIR /app/source/onnxruntime-server
ARG TARGETPLATFORM
RUN case ${TARGETPLATFORM} in \
"linux/amd64") ./download-onnxruntime.sh linux x64-gpu_cuda13 ;; \
esac
RUN cmake -DCUDA_SDK_ROOT_DIR=/usr/local/cuda-13 -DBoost_USE_STATIC_LIBS=ON -DOPENSSL_USE_STATIC_LIBS=ON -B build -S . -DCMAKE_BUILD_TYPE=Release
RUN cmake --build build --parallel 8 --target onnxruntime_server_standalone
RUN cmake --install build --prefix /app/onnxruntime-server
# target
FROM nvidia/cuda:13.1.1-cudnn-runtime-ubuntu24.04 AS target
COPY --from=builder /app/onnxruntime-server /app
COPY --from=builder /usr/local/onnxruntime /usr/local/onnxruntime
WORKDIR /app
RUN mkdir -p models logs certs
ENV ONNX_SERVER_CONFIG_PRIORITY=env
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-13/lib64:/usr/local/onnxruntime/lib
ENTRYPOINT ["/app/bin/onnxruntime_server", "--model-dir", "models", "--log-file", "logs/app.log", "--access-log-file", "logs/access.log", "--tcp-port", "6432", "--http-port", "80"]
================================================
FILE: deploy/update-version.sh
================================================
#!/usr/bin/env bash
cd "$(dirname "$0")/.." || exit
FROM_VERSION=$1
TO_VERSION=$2
if [ -z "$FROM_VERSION" ] || [ -z "$TO_VERSION" ]; then
echo "Usage: $0 "
exit 1
fi
FILES=(
"README.md"
"docs/docker.md"
"docs/swagger/openapi.yaml"
"deploy/build-docker/VERSION"
"deploy/build-docker/docker-compose.yaml"
"deploy/build-docker/README.md"
"src/test/test_lib_version.cpp"
)
pwd
for file in "${FILES[@]}"
do
echo "Updating $file"
sed -i "s/${FROM_VERSION}/${TO_VERSION}/g" "$file"
done
echo "Done"
echo
echo "Update docker hub page"
echo "https://hub.docker.com/repository/docker/kibaes/onnxruntime-server/general"
================================================
FILE: docs/docker.md
================================================
# ONNX Runtime Server
- **The ONNX Runtime Server is a server that provides TCP and HTTP/HTTPS REST APIs for ONNX inference.**
- https://github.com/kibae/onnxruntime-server
# Supported tags and respective Dockerfile links
- [`1.26.0-linux-cuda13`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cuda13.dockerfile) amd64(CUDA 13.x, cuDNN 9.x)
- [`1.26.0-linux-cuda12`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cuda12.dockerfile) amd64(CUDA 12.x, cuDNN 9.x)
- [`1.26.0-linux-cpu`](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/linux-cpu.dockerfile) amd64, arm64
# How to use this image
- onnxruntime-server supports hardware acceleration with CUDA. To use the `--gpus all` option when running `docker run`,
the `nvidia-container-toolkit` package must be installed on the host OS.
```shell
sudo apt install nvidia-container-toolkit
```
- This example assumes that your onnx files are located in the `/your_model_dir` directory on the host OS.
See [this document](https://github.com/kibae/onnxruntime-server#run-the-server) for paths and
naming conventions for onnx files
- `${model_dir}/${model_name}/${model_version}/model.onnx`
- Available environment variables can be found at
- https://github.com/kibae/onnxruntime-server#run-the-server
## General usage
- After the docker container is up, you can use the REST API (http://localhost or https://localhost).
- API documentation will be available at http://localhost/api-docs.
```shell
DOCKER_IMAGE=kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12 or 1.26.0-linux-cpu
docker pull ${DOCKER_IMAGE}
# simple http backend
docker run --name onnxruntime_server_container -d --rm --gpus all \
-p 80:80 \
-v "/your_model_dir:/app/models" \
-v "/your_log_dir:/app/logs" \
-e "ONNX_SERVER_SWAGGER_URL_PATH=/api-docs" \
${DOCKER_IMAGE}
# with https backend. cert, key files must be located in the /your_cert_dir directory on the host OS.
docker run --name onnxruntime_server_container -d --rm --gpus all \
-p 80:80 \
-p 443:443 \
-v "/your_model_dir:/app/models" \
-v "/your_log_dir:/app/logs" \
-v "/your_cert_dir:/app/certs" \
-e "ONNX_SERVER_SWAGGER_URL_PATH=/api-docs" \
-e "ONNX_SERVER_HTTPS_PORT=443" \
-e "ONNX_SERVER_HTTPS_CERT=/app/certs/cert.pem" \
-e "ONNX_SERVER_HTTPS_KEY=/app/certs/key.pem" \
${DOCKER_IMAGE}
```
## Using docker-compose
- [docker-compose.yml](https://github.com/kibae/onnxruntime-server/blob/main/deploy/build-docker/docker-compose.yaml)
example is available in the repository.
### Simple one for HTTP backend
```yaml
services:
# Available environment variables can be found at
# https://github.com/kibae/onnxruntime-server#run-the-server
onnxruntime_server_simple:
# After the docker container is up, you can use the REST API (http://localhost:8080).
# API documentation will be available at http://localhost:8080/api-docs.
image: kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12
ports:
- "8080:80" # for http backend
volumes:
# for model files
# https://github.com/kibae/onnxruntime-server#run-the-server
- /your_model_dir:/app/models
# for log files
- /your_log_dir:/app/logs
environment:
# for swagger(optional)
- ONNX_SERVER_SWAGGER_URL_PATH=/api-docs
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
```
### Advanced usage for HTTPS backend
```yaml
services:
# Available environment variables can be found at
# https://github.com/kibae/onnxruntime-server#run-the-server
onnxruntime_server_advanced:
# After the docker container is up, you can use the REST API (http://localhost, https://localhost).
# API documentation wl be available at http://localhost/api-docs.
image: kibaes/onnxruntime-server:1.26.0-linux-cuda13 # or 1.26.0-linux-cuda12
ports:
- "80:80" # for http backend
- "443:443" # for https backend
- "8001:8001" # for tcp backend. binary protocol
volumes:
# for model files
# https://github.com/kibae/onnxruntime-server#run-the-server
- /your_model_dir:/app/models
# for log files
- /your_log_dir:/app/logs
# for cert files
- /your_cert_dir:/app/certs
environment:
# for https backend
- ONNX_SERVER_HTTPS_PORT=443
# https backend needs cert, key files
- ONNX_SERVER_HTTPS_CERT=/app/certs/cert.pem
- ONNX_SERVER_HTTPS_KEY=/app/certs/key.pem
# for onnx session preparation
- ONNX_SERVER_PREPARE_MODEL="model1:v1(cuda=true) model1:v2(cuda=0) model2:v2"
# for swagger(optional)
- ONNX_SERVER_SWAGGER_URL_PATH=/api-docs
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [ gpu ]
```
================================================
FILE: docs/swagger/index.css
================================================
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
================================================
FILE: docs/swagger/index.html
================================================
Swagger UI
================================================
FILE: docs/swagger/openapi.yaml
================================================
openapi: 3.0.3
info:
title: ONNX Runtime Server
description: |-
version: 1.26.0
externalDocs:
description: ONNX Runtime Server
url: https://github.com/kibae/onnxruntime-server
tags:
- name: ONNX Runtime Session
paths:
/api/sessions:
get:
tags:
- ONNX Runtime Session
summary: List sessions
description: List all sessions
operationId: listSessions
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ONNXSession'
post:
tags:
- ONNX Runtime Session
summary: Create sessions
description: Create a new session
operationId: createSession
requestBody:
required: true
description: option, option.input_shape, option.output_shape are optional
content:
application/json(simple, wo/option):
schema:
$ref: '#/components/schemas/ONNXSessionCreateRequestSimple'
application/json(w/option):
schema:
$ref: '#/components/schemas/ONNXSessionCreateRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ONNXSession'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXBadRequestError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXNotFoundError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXConflictError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXRuntimeError'
/api/sessions/{model}/{version}:
get:
tags:
- ONNX Runtime Session
summary: Get session
description: Get a session
operationId: getSession
parameters:
- name: model
in: path
description: Model name
required: true
schema:
type: string
- name: version
in: path
description: Model version
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXSession'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXNotFoundError'
post:
tags:
- ONNX Runtime Session
summary: Execute session
description: Execute a session
operationId: executeSession
parameters:
- name: model
in: path
description: Model name
required: true
schema:
type: string
- name: version
in: path
description: Model version
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXSessionExecuteRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXSessionExecuteResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXBadRequestError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXNotFoundError'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXRuntimeError'
delete:
tags:
- ONNX Runtime Session
summary: Destroy session
description: Destroy a session
operationId: destroySession
parameters:
- name: model
in: path
description: Model name
required: true
schema:
type: string
- name: version
in: path
description: Model version
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: boolean
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ONNXNotFoundError'
/api/version:
get:
tags:
- ONNX Runtime
summary: ONNX Runtime version
description: Get ONNX Runtime version
operationId: getONNXRuntimeVersion
responses:
'200':
description: OK
content:
plain/text:
schema:
type: string
example: 1.0.0
/health:
get:
tags:
- Default
summary: Health check
description: Health check
operationId: healthCheck
responses:
'200':
description: OK
content:
plain/text:
schema:
type: string
example: OK
components:
schemas:
ONNXSession:
type: object
properties:
model:
type: string
description: Model name
nullable: false
version:
type: string
description: Model version
nullable: false
created_at:
type: number
description: Timestamp when the session was created
nullable: false
last_executed_at:
type: number
description: Timestamp when the session was last executed
nullable: false
execution_count:
type: integer
description: Number of executions
nullable: false
inputs:
type: object
description: Input types
nullable: false
example: {
"x": "float32[-1,1]",
"y": "float32[-1,1]",
"z": "float32[-1,1]"
}
outputs:
type: object
description: Output types
nullable: false
example: {
"output": "float32[-1,1]"
}
option:
$ref: '#/components/schemas/ONNXSessionOption'
ONNXSessionOption:
type: object
description: |
Normalized echo of the options applied to the session. The server only includes
keys whose corresponding ORT calls succeeded; values reflect what ORT actually
stored (read back via GetCUDAProviderOptionsAsString and GetSessionConfigEntry
where applicable).
nullable: true
properties:
cuda:
nullable: true
required: false
oneOf:
- type: boolean
description: CUDA disabled (false) — present for backward compatibility.
- $ref: '#/components/schemas/ONNXSessionOptionCUDA'
extensions:
type: array
description: Registered onnxruntime-extensions library paths in registration order, deduplicated.
required: false
items:
type: string
example:
- /absolute/path/to/libonnxruntime_extensions.so
session_options:
$ref: '#/components/schemas/ONNXSessionOptionsGroup'
ONNXSessionOptionRequest:
type: object
nullable: true
properties:
cuda:
nullable: false
required: false
oneOf:
- type: boolean
description: Enable CUDA with all defaults (device_id=0).
- type: integer
description: Enable CUDA on the given device_id.
- $ref: '#/components/schemas/ONNXSessionOptionCUDA'
input_shape:
type: object
description: Input shape overrides keyed by input name.
nullable: false
required: false
example: {
"x": [ 1, 1 ],
"y": [ 1, 1 ],
"z": [ 1, 1 ]
}
output_shape:
type: object
description: Output shape overrides keyed by output name.
nullable: false
required: false
example: {
"output": [ 1, 1 ]
}
extensions:
type: array
description: |
One or more absolute paths to onnxruntime-extensions custom-ops libraries.
Each path is registered with ORT in array order; duplicate paths are deduplicated.
nullable: false
required: false
items:
type: string
example:
- /absolute/path/to/libonnxruntime_extensions.so
ortextensions_path:
type: string
description: |
Deprecated alias for `extensions`. A single library path. The server normalizes
it into the `extensions` array on input and the response always echoes the
normalized form.
deprecated: true
nullable: false
required: false
example: /absolute/path/to/libonnxruntime_extensions.so
session_options:
$ref: '#/components/schemas/ONNXSessionOptionsGroup'
ONNXSessionOptionCUDA:
type: object
description: |
CUDA Execution Provider V2 options. The server forwards every supplied key to
UpdateCUDAProviderOptions in a single batched call; if ORT rejects any key the
whole session creation fails with the ORT error message. The response is built
from GetCUDAProviderOptionsAsString readback, so it shows exactly what ORT
stored (which may differ from the requested value if ORT normalized it).
properties:
device_id:
type: integer
description: CUDA device ID
nullable: false
gpu_mem_limit:
type: integer
description: Per-session GPU memory limit, in bytes.
nullable: false
arena_extend_strategy:
type: string
description: Arena extension strategy, e.g. "kNextPowerOfTwo" or "kSameAsRequested".
nullable: false
cudnn_conv_algo_search:
type: string
description: cuDNN convolution algorithm search policy. Accepted values are ORT-defined enum names.
nullable: false
cudnn_conv_use_max_workspace:
type: boolean
nullable: false
do_copy_in_default_stream:
type: boolean
nullable: false
enable_cuda_graph:
type: boolean
description: Capture and replay a CUDA graph (requires static input shapes).
nullable: false
tunable_op_enable:
type: boolean
nullable: false
tunable_op_tuning_enable:
type: boolean
nullable: false
cudnn_conv1d_pad_to_nc1d:
type: boolean
nullable: false
additionalProperties:
description: |
Any additional CUDA Execution Provider V2 key understood by your ORT build is
forwarded as-is. Refer to the ORT CUDA EP documentation for the full list of
accepted keys.
ONNXSessionOptionsGroup:
type: object
description: |
Session-level options forwarded to onnxruntime SessionOptions. The server only
validates JSON shape (types and our enum-string mapping); ORT decides whether the
value itself is acceptable. Keys whose ORT setter throws are silently dropped from
the echoed response. The `config_entries` object is round-tripped through
GetSessionConfigEntry so the echo shows what ORT actually stored (always strings).
nullable: false
required: false
properties:
intra_op_num_threads:
type: integer
description: Number of threads used for parallelizing operators. 0 means ORT default.
nullable: false
inter_op_num_threads:
type: integer
description: Number of threads used for parallelizing the graph. 0 means ORT default.
nullable: false
execution_mode:
type: string
enum: [sequential, parallel]
nullable: false
graph_optimization_level:
type: string
enum: [disable, basic, extended, all]
nullable: false
enable_cpu_mem_arena:
type: boolean
nullable: false
enable_mem_pattern:
type: boolean
nullable: false
log_severity_level:
type: integer
description: ORT log severity level (0=verbose ... 4=fatal).
nullable: false
logid:
type: string
nullable: false
enable_profiling:
type: boolean
description: Enable profiling. When true, profile_file_prefix must also be supplied.
nullable: false
profile_file_prefix:
type: string
nullable: false
optimized_model_filepath:
type: string
description: Filepath where ORT writes the optimized model after graph transformations.
nullable: false
free_dimension_overrides:
type: object
description: Map of free dimension name to a fixed integer size.
additionalProperties:
type: integer
nullable: false
example:
batch: 1
config_entries:
type: object
description: |
Generic passthrough to AddSessionConfigEntry (e.g. "session.disable_prepacking").
Booleans and integers are stringified before being passed to ORT; values in the
response are always strings (round-tripped through GetSessionConfigEntry).
additionalProperties:
oneOf:
- type: string
- type: boolean
- type: integer
nullable: false
example:
session.disable_prepacking: "1"
ONNXSessionCreateRequest:
type: object
properties:
model:
type: string
description: Model name
required: true
nullable: false
version:
type: string
description: Model version
required: true
nullable: false
option:
required: false
nullable: true
$ref: '#/components/schemas/ONNXSessionOptionRequest'
ONNXSessionCreateRequestSimple:
type: object
example: {
"model": "string",
"version": "string"
}
properties:
model:
type: string
description: Model name
required: true
nullable: false
version:
type: string
description: Model version
required: true
nullable: false
option:
required: false
nullable: true
$ref: '#/components/schemas/ONNXSessionOptionRequest'
ONNXSessionExecuteRequest:
type: object
example: {
"x": [ [ 1 ], [ 2 ], [ 3 ] ],
"y": [ [ 2 ], [ 3 ], [ 4 ] ],
"z": [ [ 3 ], [ 4 ], [ 5 ] ]
}
properties:
input_name1:
type: array
description: Input data
items:
oneOf:
- type: number
- type: string
input_name2:
type: array
description: Input data
items:
oneOf:
- type: number
- type: string
ONNXSessionExecuteResponse:
type: object
example: {
"output": [ [ 0.6492120623588562 ], [ 0.7610487341880798 ], [ 0.8728854656219482 ] ]
}
properties:
output_name1:
type: array
description: Output data
items:
oneOf:
- type: number
- type: string
output_name2:
type: array
description: Output data
items:
oneOf:
- type: number
- type: string
ONNXError:
type: object
properties:
error_type:
type: string
description: Error type
nullable: false
enum:
- runtime_error
- bad_request_error
- not_found_error
- conflict_error
error:
type: string
description: Error message
nullable: false
ONNXBadRequestError:
allOf:
- $ref: '#/components/schemas/ONNXError'
properties:
error_type:
type: string
example: bad_request_error
ONNXNotFoundError:
allOf:
- $ref: '#/components/schemas/ONNXError'
properties:
error_type:
type: string
example: not_found_error
ONNXConflictError:
allOf:
- $ref: '#/components/schemas/ONNXError'
properties:
error_type:
type: string
example: conflict_error
ONNXRuntimeError:
allOf:
- $ref: '#/components/schemas/ONNXError'
properties:
error_type:
type: string
example: runtime_error
================================================
FILE: docs/swagger/swagger-ui-bundle.js
================================================
/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
!function webpackUniversalModuleDefinition(i,s){"object"==typeof exports&&"object"==typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):"object"==typeof exports?exports.SwaggerUIBundle=s():i.SwaggerUIBundle=s()}(this,(()=>(()=>{var i={17967:(i,s)=>{"use strict";s.Nm=s.Rq=void 0;var u=/^([^\w]*)(javascript|data|vbscript)/im,m=/(\w+)(^\w|;)?/g,v=/&(newline|tab);/gi,_=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,j=/^.+(:|:)/gim,M=[".","/"];s.Rq="about:blank",s.Nm=function sanitizeUrl(i){if(!i)return s.Rq;var $=function decodeHtmlCharacters(i){return i.replace(_,"").replace(m,(function(i,s){return String.fromCharCode(s)}))}(i).replace(v,"").replace(_,"").trim();if(!$)return s.Rq;if(function isRelativeUrlWithoutProtocol(i){return M.indexOf(i[0])>-1}($))return $;var W=$.match(j);if(!W)return $;var X=W[0];return u.test(X)?s.Rq:$}},79742:(i,s)=>{"use strict";s.byteLength=function byteLength(i){var s=getLens(i),u=s[0],m=s[1];return 3*(u+m)/4-m},s.toByteArray=function toByteArray(i){var s,u,_=getLens(i),j=_[0],M=_[1],$=new v(function _byteLength(i,s,u){return 3*(s+u)/4-u}(0,j,M)),W=0,X=M>0?j-4:j;for(u=0;u>16&255,$[W++]=s>>8&255,$[W++]=255&s;2===M&&(s=m[i.charCodeAt(u)]<<2|m[i.charCodeAt(u+1)]>>4,$[W++]=255&s);1===M&&(s=m[i.charCodeAt(u)]<<10|m[i.charCodeAt(u+1)]<<4|m[i.charCodeAt(u+2)]>>2,$[W++]=s>>8&255,$[W++]=255&s);return $},s.fromByteArray=function fromByteArray(i){for(var s,m=i.length,v=m%3,_=[],j=16383,M=0,$=m-v;M<$;M+=j)_.push(encodeChunk(i,M,M+j>$?$:M+j));1===v?(s=i[m-1],_.push(u[s>>2]+u[s<<4&63]+"==")):2===v&&(s=(i[m-2]<<8)+i[m-1],_.push(u[s>>10]+u[s>>4&63]+u[s<<2&63]+"="));return _.join("")};for(var u=[],m=[],v="undefined"!=typeof Uint8Array?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",j=0;j<64;++j)u[j]=_[j],m[_.charCodeAt(j)]=j;function getLens(i){var s=i.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var u=i.indexOf("=");return-1===u&&(u=s),[u,u===s?0:4-u%4]}function encodeChunk(i,s,m){for(var v,_,j=[],M=s;M>18&63]+u[_>>12&63]+u[_>>6&63]+u[63&_]);return j.join("")}m["-".charCodeAt(0)]=62,m["_".charCodeAt(0)]=63},48764:(i,s,u)=>{"use strict";const m=u(79742),v=u(80645),_="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;s.Buffer=Buffer,s.SlowBuffer=function SlowBuffer(i){+i!=i&&(i=0);return Buffer.alloc(+i)},s.INSPECT_MAX_BYTES=50;const j=2147483647;function createBuffer(i){if(i>j)throw new RangeError('The value "'+i+'" is invalid for option "size"');const s=new Uint8Array(i);return Object.setPrototypeOf(s,Buffer.prototype),s}function Buffer(i,s,u){if("number"==typeof i){if("string"==typeof s)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(i)}return from(i,s,u)}function from(i,s,u){if("string"==typeof i)return function fromString(i,s){"string"==typeof s&&""!==s||(s="utf8");if(!Buffer.isEncoding(s))throw new TypeError("Unknown encoding: "+s);const u=0|byteLength(i,s);let m=createBuffer(u);const v=m.write(i,s);v!==u&&(m=m.slice(0,v));return m}(i,s);if(ArrayBuffer.isView(i))return function fromArrayView(i){if(isInstance(i,Uint8Array)){const s=new Uint8Array(i);return fromArrayBuffer(s.buffer,s.byteOffset,s.byteLength)}return fromArrayLike(i)}(i);if(null==i)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(isInstance(i,ArrayBuffer)||i&&isInstance(i.buffer,ArrayBuffer))return fromArrayBuffer(i,s,u);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(i,SharedArrayBuffer)||i&&isInstance(i.buffer,SharedArrayBuffer)))return fromArrayBuffer(i,s,u);if("number"==typeof i)throw new TypeError('The "value" argument must not be of type number. Received type number');const m=i.valueOf&&i.valueOf();if(null!=m&&m!==i)return Buffer.from(m,s,u);const v=function fromObject(i){if(Buffer.isBuffer(i)){const s=0|checked(i.length),u=createBuffer(s);return 0===u.length||i.copy(u,0,0,s),u}if(void 0!==i.length)return"number"!=typeof i.length||numberIsNaN(i.length)?createBuffer(0):fromArrayLike(i);if("Buffer"===i.type&&Array.isArray(i.data))return fromArrayLike(i.data)}(i);if(v)return v;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof i[Symbol.toPrimitive])return Buffer.from(i[Symbol.toPrimitive]("string"),s,u);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}function assertSize(i){if("number"!=typeof i)throw new TypeError('"size" argument must be of type number');if(i<0)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function allocUnsafe(i){return assertSize(i),createBuffer(i<0?0:0|checked(i))}function fromArrayLike(i){const s=i.length<0?0:0|checked(i.length),u=createBuffer(s);for(let m=0;m=j)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+j.toString(16)+" bytes");return 0|i}function byteLength(i,s){if(Buffer.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||isInstance(i,ArrayBuffer))return i.byteLength;if("string"!=typeof i)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);const u=i.length,m=arguments.length>2&&!0===arguments[2];if(!m&&0===u)return 0;let v=!1;for(;;)switch(s){case"ascii":case"latin1":case"binary":return u;case"utf8":case"utf-8":return utf8ToBytes(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*u;case"hex":return u>>>1;case"base64":return base64ToBytes(i).length;default:if(v)return m?-1:utf8ToBytes(i).length;s=(""+s).toLowerCase(),v=!0}}function slowToString(i,s,u){let m=!1;if((void 0===s||s<0)&&(s=0),s>this.length)return"";if((void 0===u||u>this.length)&&(u=this.length),u<=0)return"";if((u>>>=0)<=(s>>>=0))return"";for(i||(i="utf8");;)switch(i){case"hex":return hexSlice(this,s,u);case"utf8":case"utf-8":return utf8Slice(this,s,u);case"ascii":return asciiSlice(this,s,u);case"latin1":case"binary":return latin1Slice(this,s,u);case"base64":return base64Slice(this,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,s,u);default:if(m)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),m=!0}}function swap(i,s,u){const m=i[s];i[s]=i[u],i[u]=m}function bidirectionalIndexOf(i,s,u,m,v){if(0===i.length)return-1;if("string"==typeof u?(m=u,u=0):u>2147483647?u=2147483647:u<-2147483648&&(u=-2147483648),numberIsNaN(u=+u)&&(u=v?0:i.length-1),u<0&&(u=i.length+u),u>=i.length){if(v)return-1;u=i.length-1}else if(u<0){if(!v)return-1;u=0}if("string"==typeof s&&(s=Buffer.from(s,m)),Buffer.isBuffer(s))return 0===s.length?-1:arrayIndexOf(i,s,u,m,v);if("number"==typeof s)return s&=255,"function"==typeof Uint8Array.prototype.indexOf?v?Uint8Array.prototype.indexOf.call(i,s,u):Uint8Array.prototype.lastIndexOf.call(i,s,u):arrayIndexOf(i,[s],u,m,v);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(i,s,u,m,v){let _,j=1,M=i.length,$=s.length;if(void 0!==m&&("ucs2"===(m=String(m).toLowerCase())||"ucs-2"===m||"utf16le"===m||"utf-16le"===m)){if(i.length<2||s.length<2)return-1;j=2,M/=2,$/=2,u/=2}function read(i,s){return 1===j?i[s]:i.readUInt16BE(s*j)}if(v){let m=-1;for(_=u;_M&&(u=M-$),_=u;_>=0;_--){let u=!0;for(let m=0;m<$;m++)if(read(i,_+m)!==read(s,m)){u=!1;break}if(u)return _}return-1}function hexWrite(i,s,u,m){u=Number(u)||0;const v=i.length-u;m?(m=Number(m))>v&&(m=v):m=v;const _=s.length;let j;for(m>_/2&&(m=_/2),j=0;j>8,v=u%256,_.push(v),_.push(m);return _}(s,i.length-u),i,u,m)}function base64Slice(i,s,u){return 0===s&&u===i.length?m.fromByteArray(i):m.fromByteArray(i.slice(s,u))}function utf8Slice(i,s,u){u=Math.min(i.length,u);const m=[];let v=s;for(;v239?4:s>223?3:s>191?2:1;if(v+j<=u){let u,m,M,$;switch(j){case 1:s<128&&(_=s);break;case 2:u=i[v+1],128==(192&u)&&($=(31&s)<<6|63&u,$>127&&(_=$));break;case 3:u=i[v+1],m=i[v+2],128==(192&u)&&128==(192&m)&&($=(15&s)<<12|(63&u)<<6|63&m,$>2047&&($<55296||$>57343)&&(_=$));break;case 4:u=i[v+1],m=i[v+2],M=i[v+3],128==(192&u)&&128==(192&m)&&128==(192&M)&&($=(15&s)<<18|(63&u)<<12|(63&m)<<6|63&M,$>65535&&$<1114112&&(_=$))}}null===_?(_=65533,j=1):_>65535&&(_-=65536,m.push(_>>>10&1023|55296),_=56320|1023&_),m.push(_),v+=j}return function decodeCodePointsArray(i){const s=i.length;if(s<=M)return String.fromCharCode.apply(String,i);let u="",m=0;for(;mm.length?(Buffer.isBuffer(s)||(s=Buffer.from(s)),s.copy(m,v)):Uint8Array.prototype.set.call(m,s,v);else{if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(m,v)}v+=s.length}return m},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const i=this.length;if(i%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let s=0;su&&(i+=" ... "),""},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(i,s,u,m,v){if(isInstance(i,Uint8Array)&&(i=Buffer.from(i,i.offset,i.byteLength)),!Buffer.isBuffer(i))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof i);if(void 0===s&&(s=0),void 0===u&&(u=i?i.length:0),void 0===m&&(m=0),void 0===v&&(v=this.length),s<0||u>i.length||m<0||v>this.length)throw new RangeError("out of range index");if(m>=v&&s>=u)return 0;if(m>=v)return-1;if(s>=u)return 1;if(this===i)return 0;let _=(v>>>=0)-(m>>>=0),j=(u>>>=0)-(s>>>=0);const M=Math.min(_,j),$=this.slice(m,v),W=i.slice(s,u);for(let i=0;i>>=0,isFinite(u)?(u>>>=0,void 0===m&&(m="utf8")):(m=u,u=void 0)}const v=this.length-s;if((void 0===u||u>v)&&(u=v),i.length>0&&(u<0||s<0)||s>this.length)throw new RangeError("Attempt to write outside buffer bounds");m||(m="utf8");let _=!1;for(;;)switch(m){case"hex":return hexWrite(this,i,s,u);case"utf8":case"utf-8":return utf8Write(this,i,s,u);case"ascii":case"latin1":case"binary":return asciiWrite(this,i,s,u);case"base64":return base64Write(this,i,s,u);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,i,s,u);default:if(_)throw new TypeError("Unknown encoding: "+m);m=(""+m).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const M=4096;function asciiSlice(i,s,u){let m="";u=Math.min(i.length,u);for(let v=s;vm)&&(u=m);let v="";for(let m=s;mu)throw new RangeError("Trying to access beyond buffer length")}function checkInt(i,s,u,m,v,_){if(!Buffer.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(s>v||s<_)throw new RangeError('"value" argument is out of bounds');if(u+m>i.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_,_>>=8,i[u++]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,j>>=8,i[u++]=j,u}function wrtBigUInt64BE(i,s,u,m,v){checkIntBI(s,m,v,i,u,7);let _=Number(s&BigInt(4294967295));i[u+7]=_,_>>=8,i[u+6]=_,_>>=8,i[u+5]=_,_>>=8,i[u+4]=_;let j=Number(s>>BigInt(32)&BigInt(4294967295));return i[u+3]=j,j>>=8,i[u+2]=j,j>>=8,i[u+1]=j,j>>=8,i[u]=j,u+8}function checkIEEE754(i,s,u,m,v,_){if(u+m>i.length)throw new RangeError("Index out of range");if(u<0)throw new RangeError("Index out of range")}function writeFloat(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,4),v.write(i,s,u,m,23,4),u+4}function writeDouble(i,s,u,m,_){return s=+s,u>>>=0,_||checkIEEE754(i,0,u,8),v.write(i,s,u,m,52,8),u+8}Buffer.prototype.slice=function slice(i,s){const u=this.length;(i=~~i)<0?(i+=u)<0&&(i=0):i>u&&(i=u),(s=void 0===s?u:~~s)<0?(s+=u)<0&&(s=0):s>u&&(s=u),s>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i+--s],v=1;for(;s>0&&(v*=256);)m+=this[i+--s]*v;return m},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),this[i]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]|this[i+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(i,s){return i>>>=0,s||checkOffset(i,2,this.length),this[i]<<8|this[i+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),(this[i]|this[i+1]<<8|this[i+2]<<16)+16777216*this[i+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),16777216*this[i]+(this[i+1]<<16|this[i+2]<<8|this[i+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s+256*this[++i]+65536*this[++i]+this[++i]*2**24,v=this[++i]+256*this[++i]+65536*this[++i]+u*2**24;return BigInt(m)+(BigInt(v)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=s*2**24+65536*this[++i]+256*this[++i]+this[++i],v=this[++i]*2**24+65536*this[++i]+256*this[++i]+u;return(BigInt(m)<>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=this[i],v=1,_=0;for(;++_=v&&(m-=Math.pow(2,8*s)),m},Buffer.prototype.readIntBE=function readIntBE(i,s,u){i>>>=0,s>>>=0,u||checkOffset(i,s,this.length);let m=s,v=1,_=this[i+--m];for(;m>0&&(v*=256);)_+=this[i+--m]*v;return v*=128,_>=v&&(_-=Math.pow(2,8*s)),_},Buffer.prototype.readInt8=function readInt8(i,s){return i>>>=0,s||checkOffset(i,1,this.length),128&this[i]?-1*(255-this[i]+1):this[i]},Buffer.prototype.readInt16LE=function readInt16LE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i]|this[i+1]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt16BE=function readInt16BE(i,s){i>>>=0,s||checkOffset(i,2,this.length);const u=this[i+1]|this[i]<<8;return 32768&u?4294901760|u:u},Buffer.prototype.readInt32LE=function readInt32LE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]|this[i+1]<<8|this[i+2]<<16|this[i+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),this[i]<<24|this[i+1]<<16|this[i+2]<<8|this[i+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(i){validateNumber(i>>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=this[i+4]+256*this[i+5]+65536*this[i+6]+(u<<24);return(BigInt(m)<>>=0,"offset");const s=this[i],u=this[i+7];void 0!==s&&void 0!==u||boundsError(i,this.length-8);const m=(s<<24)+65536*this[++i]+256*this[++i]+this[++i];return(BigInt(m)<>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(i,s){return i>>>=0,s||checkOffset(i,4,this.length),v.read(this,i,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(i,s){return i>>>=0,s||checkOffset(i,8,this.length),v.read(this,i,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(i,s,u,m){if(i=+i,s>>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=1,_=0;for(this[s]=255&i;++_>>=0,u>>>=0,!m){checkInt(this,i,s,u,Math.pow(2,8*u)-1,0)}let v=u-1,_=1;for(this[s+v]=255&i;--v>=0&&(_*=256);)this[s+v]=i/_&255;return s+u},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,255,0),this[s]=255&i,s+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,65535,0),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s+3]=i>>>24,this[s+2]=i>>>16,this[s+1]=i>>>8,this[s]=255&i,s+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,4294967295,0),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=0,_=1,j=0;for(this[s]=255&i;++v>0)-j&255;return s+u},Buffer.prototype.writeIntBE=function writeIntBE(i,s,u,m){if(i=+i,s>>>=0,!m){const m=Math.pow(2,8*u-1);checkInt(this,i,s,u,m-1,-m)}let v=u-1,_=1,j=0;for(this[s+v]=255&i;--v>=0&&(_*=256);)i<0&&0===j&&0!==this[s+v+1]&&(j=1),this[s+v]=(i/_>>0)-j&255;return s+u},Buffer.prototype.writeInt8=function writeInt8(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,1,127,-128),i<0&&(i=255+i+1),this[s]=255&i,s+1},Buffer.prototype.writeInt16LE=function writeInt16LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=255&i,this[s+1]=i>>>8,s+2},Buffer.prototype.writeInt16BE=function writeInt16BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,2,32767,-32768),this[s]=i>>>8,this[s+1]=255&i,s+2},Buffer.prototype.writeInt32LE=function writeInt32LE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),this[s]=255&i,this[s+1]=i>>>8,this[s+2]=i>>>16,this[s+3]=i>>>24,s+4},Buffer.prototype.writeInt32BE=function writeInt32BE(i,s,u){return i=+i,s>>>=0,u||checkInt(this,i,s,4,2147483647,-2147483648),i<0&&(i=4294967295+i+1),this[s]=i>>>24,this[s+1]=i>>>16,this[s+2]=i>>>8,this[s+3]=255&i,s+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(i,s=0){return wrtBigUInt64LE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(i,s=0){return wrtBigUInt64BE(this,i,s,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(i,s,u){return writeFloat(this,i,s,!0,u)},Buffer.prototype.writeFloatBE=function writeFloatBE(i,s,u){return writeFloat(this,i,s,!1,u)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(i,s,u){return writeDouble(this,i,s,!0,u)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(i,s,u){return writeDouble(this,i,s,!1,u)},Buffer.prototype.copy=function copy(i,s,u,m){if(!Buffer.isBuffer(i))throw new TypeError("argument should be a Buffer");if(u||(u=0),m||0===m||(m=this.length),s>=i.length&&(s=i.length),s||(s=0),m>0&&m=this.length)throw new RangeError("Index out of range");if(m<0)throw new RangeError("sourceEnd out of bounds");m>this.length&&(m=this.length),i.length-s>>=0,u=void 0===u?this.length:u>>>0,i||(i=0),"number"==typeof i)for(v=s;v=m+4;u-=3)s=`_${i.slice(u-3,u)}${s}`;return`${i.slice(0,u)}${s}`}function checkIntBI(i,s,u,m,v,_){if(i>u||i3?0===s||s===BigInt(0)?`>= 0${m} and < 2${m} ** ${8*(_+1)}${m}`:`>= -(2${m} ** ${8*(_+1)-1}${m}) and < 2 ** ${8*(_+1)-1}${m}`:`>= ${s}${m} and <= ${u}${m}`,new $.ERR_OUT_OF_RANGE("value",v,i)}!function checkBounds(i,s,u){validateNumber(s,"offset"),void 0!==i[s]&&void 0!==i[s+u]||boundsError(s,i.length-(u+1))}(m,v,_)}function validateNumber(i,s){if("number"!=typeof i)throw new $.ERR_INVALID_ARG_TYPE(s,"number",i)}function boundsError(i,s,u){if(Math.floor(i)!==i)throw validateNumber(i,u),new $.ERR_OUT_OF_RANGE(u||"offset","an integer",i);if(s<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(u||"offset",`>= ${u?1:0} and <= ${s}`,i)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(i){return i?`${i} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(i,s){return`The "${i}" argument must be of type number. Received type ${typeof s}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(i,s,u){let m=`The value of "${i}" is out of range.`,v=u;return Number.isInteger(u)&&Math.abs(u)>2**32?v=addNumericalSeparator(String(u)):"bigint"==typeof u&&(v=String(u),(u>BigInt(2)**BigInt(32)||u<-(BigInt(2)**BigInt(32)))&&(v=addNumericalSeparator(v)),v+="n"),m+=` It must be ${s}. Received ${v}`,m}),RangeError);const W=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(i,s){let u;s=s||1/0;const m=i.length;let v=null;const _=[];for(let j=0;j55295&&u<57344){if(!v){if(u>56319){(s-=3)>-1&&_.push(239,191,189);continue}if(j+1===m){(s-=3)>-1&&_.push(239,191,189);continue}v=u;continue}if(u<56320){(s-=3)>-1&&_.push(239,191,189),v=u;continue}u=65536+(v-55296<<10|u-56320)}else v&&(s-=3)>-1&&_.push(239,191,189);if(v=null,u<128){if((s-=1)<0)break;_.push(u)}else if(u<2048){if((s-=2)<0)break;_.push(u>>6|192,63&u|128)}else if(u<65536){if((s-=3)<0)break;_.push(u>>12|224,u>>6&63|128,63&u|128)}else{if(!(u<1114112))throw new Error("Invalid code point");if((s-=4)<0)break;_.push(u>>18|240,u>>12&63|128,u>>6&63|128,63&u|128)}}return _}function base64ToBytes(i){return m.toByteArray(function base64clean(i){if((i=(i=i.split("=")[0]).trim().replace(W,"")).length<2)return"";for(;i.length%4!=0;)i+="=";return i}(i))}function blitBuffer(i,s,u,m){let v;for(v=0;v=s.length||v>=i.length);++v)s[v+u]=i[v];return v}function isInstance(i,s){return i instanceof s||null!=i&&null!=i.constructor&&null!=i.constructor.name&&i.constructor.name===s.name}function numberIsNaN(i){return i!=i}const X=function(){const i="0123456789abcdef",s=new Array(256);for(let u=0;u<16;++u){const m=16*u;for(let v=0;v<16;++v)s[m+v]=i[u]+i[v]}return s}();function defineBigIntMethod(i){return"undefined"==typeof BigInt?BufferBigIntNotDefined:i}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},21924:(i,s,u)=>{"use strict";var m=u(40210),v=u(55559),_=v(m("String.prototype.indexOf"));i.exports=function callBoundIntrinsic(i,s){var u=m(i,!!s);return"function"==typeof u&&_(i,".prototype.")>-1?v(u):u}},55559:(i,s,u)=>{"use strict";var m=u(58612),v=u(40210),_=v("%Function.prototype.apply%"),j=v("%Function.prototype.call%"),M=v("%Reflect.apply%",!0)||m.call(j,_),$=v("%Object.getOwnPropertyDescriptor%",!0),W=v("%Object.defineProperty%",!0),X=v("%Math.max%");if(W)try{W({},"a",{value:1})}catch(i){W=null}i.exports=function callBind(i){var s=M(m,j,arguments);$&&W&&($(s,"length").configurable&&W(s,"length",{value:1+X(0,i.length-(arguments.length-1))}));return s};var Y=function applyBind(){return M(m,_,arguments)};W?W(i.exports,"apply",{value:Y}):i.exports.apply=Y},94184:(i,s)=>{var u;!function(){"use strict";var m={}.hasOwnProperty;function classNames(){for(var i=[],s=0;s{"use strict";s.parse=function parse(i,s){if("string"!=typeof i)throw new TypeError("argument str must be a string");var u={},m=(s||{}).decode||decode,v=0;for(;v{"use strict";var m=u(11742),v={"text/plain":"Text","text/html":"Url",default:"Text"};i.exports=function copy(i,s){var u,_,j,M,$,W,X=!1;s||(s={}),u=s.debug||!1;try{if(j=m(),M=document.createRange(),$=document.getSelection(),(W=document.createElement("span")).textContent=i,W.ariaHidden="true",W.style.all="unset",W.style.position="fixed",W.style.top=0,W.style.clip="rect(0, 0, 0, 0)",W.style.whiteSpace="pre",W.style.webkitUserSelect="text",W.style.MozUserSelect="text",W.style.msUserSelect="text",W.style.userSelect="text",W.addEventListener("copy",(function(m){if(m.stopPropagation(),s.format)if(m.preventDefault(),void 0===m.clipboardData){u&&console.warn("unable to use e.clipboardData"),u&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=v[s.format]||v.default;window.clipboardData.setData(_,i)}else m.clipboardData.clearData(),m.clipboardData.setData(s.format,i);s.onCopy&&(m.preventDefault(),s.onCopy(m.clipboardData))})),document.body.appendChild(W),M.selectNodeContents(W),$.addRange(M),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");X=!0}catch(m){u&&console.error("unable to copy using execCommand: ",m),u&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(s.format||"text",i),s.onCopy&&s.onCopy(window.clipboardData),X=!0}catch(m){u&&console.error("unable to copy using clipboardData: ",m),u&&console.error("falling back to prompt"),_=function format(i){var s=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return i.replace(/#{\s*key\s*}/g,s)}("message"in s?s.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,i)}}finally{$&&("function"==typeof $.removeRange?$.removeRange(M):$.removeAllRanges()),W&&document.body.removeChild(W),j()}return X}},90093:(i,s,u)=>{var m=u(28196);i.exports=m},3688:(i,s,u)=>{var m=u(11955);i.exports=m},83838:(i,s,u)=>{var m=u(46279);i.exports=m},15684:(i,s,u)=>{var m=u(19373);i.exports=m},81331:(i,s,u)=>{var m=u(52759);i.exports=m},65362:(i,s,u)=>{var m=u(63383);i.exports=m},91254:(i,s,u)=>{var m=u(57396);i.exports=m},43536:(i,s,u)=>{var m=u(41910);i.exports=m},37331:(i,s,u)=>{var m=u(79427);i.exports=m},68522:(i,s,u)=>{var m=u(62857);i.exports=m},73151:(i,s,u)=>{var m=u(9534);i.exports=m},45012:(i,s,u)=>{var m=u(23059);i.exports=m},80281:(i,s,u)=>{var m=u(92547);u(97522),u(43975),u(45414),i.exports=m},40031:(i,s,u)=>{var m=u(46509);i.exports=m},17487:(i,s,u)=>{var m=u(35774);i.exports=m},62383:(i,s,u)=>{u(21501);var m=u(35703);i.exports=m("Array").filter},99324:(i,s,u)=>{u(2437);var m=u(35703);i.exports=m("Array").forEach},8700:(i,s,u)=>{u(99076);var m=u(35703);i.exports=m("Array").indexOf},9896:(i,s,u)=>{u(48528);var m=u(35703);i.exports=m("Array").push},27700:(i,s,u)=>{u(73381);var m=u(35703);i.exports=m("Function").bind},16246:(i,s,u)=>{var m=u(7046),v=u(27700),_=Function.prototype;i.exports=function(i){var s=i.bind;return i===_||m(_,i)&&s===_.bind?v:s}},2480:(i,s,u)=>{var m=u(7046),v=u(62383),_=Array.prototype;i.exports=function(i){var s=i.filter;return i===_||m(_,i)&&s===_.filter?v:s}},34570:(i,s,u)=>{var m=u(7046),v=u(8700),_=Array.prototype;i.exports=function(i){var s=i.indexOf;return i===_||m(_,i)&&s===_.indexOf?v:s}},93993:(i,s,u)=>{var m=u(7046),v=u(9896),_=Array.prototype;i.exports=function(i){var s=i.push;return i===_||m(_,i)&&s===_.push?v:s}},45999:(i,s,u)=>{u(49221);var m=u(54058);i.exports=m.Object.assign},7702:(i,s,u)=>{u(74979);var m=u(54058).Object,v=i.exports=function defineProperties(i,s){return m.defineProperties(i,s)};m.defineProperties.sham&&(v.sham=!0)},48171:(i,s,u)=>{u(86450);var m=u(54058).Object,v=i.exports=function defineProperty(i,s,u){return m.defineProperty(i,s,u)};m.defineProperty.sham&&(v.sham=!0)},286:(i,s,u)=>{u(46924);var m=u(54058).Object,v=i.exports=function getOwnPropertyDescriptor(i,s){return m.getOwnPropertyDescriptor(i,s)};m.getOwnPropertyDescriptor.sham&&(v.sham=!0)},92766:(i,s,u)=>{u(88482);var m=u(54058);i.exports=m.Object.getOwnPropertyDescriptors},30498:(i,s,u)=>{u(35824);var m=u(54058);i.exports=m.Object.getOwnPropertySymbols},48494:(i,s,u)=>{u(21724);var m=u(54058);i.exports=m.Object.keys},57473:(i,s,u)=>{u(85906),u(55967),u(35824),u(8555),u(52615),u(21732),u(35903),u(1825),u(28394),u(45915),u(61766),u(62737),u(89911),u(74315),u(63131),u(64714),u(70659),u(69120),u(79413),u(1502);var m=u(54058);i.exports=m.Symbol},24227:(i,s,u)=>{u(66274),u(55967),u(77971),u(1825);var m=u(11477);i.exports=m.f("iterator")},62978:(i,s,u)=>{u(18084),u(63131);var m=u(11477);i.exports=m.f("toPrimitive")},14122:(i,s,u)=>{i.exports=u(89097)},44442:(i,s,u)=>{i.exports=u(51675)},57152:(i,s,u)=>{i.exports=u(82507)},69447:(i,s,u)=>{i.exports=u(628)},1449:(i,s,u)=>{i.exports=u(34501)},60269:(i,s,u)=>{i.exports=u(76936)},70573:(i,s,u)=>{i.exports=u(18180)},73685:(i,s,u)=>{i.exports=u(80621)},27533:(i,s,u)=>{i.exports=u(22948)},39057:(i,s,u)=>{i.exports=u(82108)},84710:(i,s,u)=>{i.exports=u(14058)},93799:(i,s,u)=>{i.exports=u(92093)},86600:(i,s,u)=>{i.exports=u(52201)},9759:(i,s,u)=>{i.exports=u(27398)},71384:(i,s,u)=>{i.exports=u(26189)},89097:(i,s,u)=>{var m=u(90093);i.exports=m},51675:(i,s,u)=>{var m=u(3688);i.exports=m},82507:(i,s,u)=>{var m=u(83838);i.exports=m},628:(i,s,u)=>{var m=u(15684);i.exports=m},34501:(i,s,u)=>{var m=u(81331);i.exports=m},76936:(i,s,u)=>{var m=u(65362);i.exports=m},18180:(i,s,u)=>{var m=u(91254);i.exports=m},80621:(i,s,u)=>{var m=u(43536);i.exports=m},22948:(i,s,u)=>{var m=u(37331);i.exports=m},82108:(i,s,u)=>{var m=u(68522);i.exports=m},14058:(i,s,u)=>{var m=u(73151);i.exports=m},92093:(i,s,u)=>{var m=u(45012);i.exports=m},52201:(i,s,u)=>{var m=u(80281);u(28783),u(97618),u(6989),u(65799),u(46774),u(22731),u(85605),u(31943),u(80620),u(36172),i.exports=m},27398:(i,s,u)=>{var m=u(40031);i.exports=m},26189:(i,s,u)=>{var m=u(17487);i.exports=m},24883:(i,s,u)=>{var m=u(57475),v=u(69826),_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not a function")}},11851:(i,s,u)=>{var m=u(57475),v=String,_=TypeError;i.exports=function(i){if("object"==typeof i||m(i))return i;throw _("Can't set "+v(i)+" as a prototype")}},18479:i=>{i.exports=function(){}},96059:(i,s,u)=>{var m=u(10941),v=String,_=TypeError;i.exports=function(i){if(m(i))return i;throw _(v(i)+" is not an object")}},56837:(i,s,u)=>{"use strict";var m=u(3610).forEach,v=u(34194)("forEach");i.exports=v?[].forEach:function forEach(i){return m(this,i,arguments.length>1?arguments[1]:void 0)}},31692:(i,s,u)=>{var m=u(74529),v=u(59413),_=u(10623),createMethod=function(i){return function(s,u,j){var M,$=m(s),W=_($),X=v(j,W);if(i&&u!=u){for(;W>X;)if((M=$[X++])!=M)return!0}else for(;W>X;X++)if((i||X in $)&&$[X]===u)return i||X||0;return!i&&-1}};i.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},3610:(i,s,u)=>{var m=u(86843),v=u(95329),_=u(37026),j=u(89678),M=u(10623),$=u(64692),W=v([].push),createMethod=function(i){var s=1==i,u=2==i,v=3==i,X=4==i,Y=6==i,Z=7==i,ee=5==i||Y;return function(ie,ae,ce,le){for(var pe,de,fe=j(ie),ye=_(fe),be=m(ae,ce),_e=M(ye),we=0,Se=le||$,xe=s?Se(ie,_e):u||Z?Se(ie,0):void 0;_e>we;we++)if((ee||we in ye)&&(de=be(pe=ye[we],we,fe),i))if(s)xe[we]=de;else if(de)switch(i){case 3:return!0;case 5:return pe;case 6:return we;case 2:W(xe,pe)}else switch(i){case 4:return!1;case 7:W(xe,pe)}return Y?-1:v||X?X:xe}};i.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},50568:(i,s,u)=>{var m=u(95981),v=u(99813),_=u(53385),j=v("species");i.exports=function(i){return _>=51||!m((function(){var s=[];return(s.constructor={})[j]=function(){return{foo:1}},1!==s[i](Boolean).foo}))}},34194:(i,s,u)=>{"use strict";var m=u(95981);i.exports=function(i,s){var u=[][i];return!!u&&m((function(){u.call(null,s||function(){return 1},1)}))}},89779:(i,s,u)=>{"use strict";var m=u(55746),v=u(1052),_=TypeError,j=Object.getOwnPropertyDescriptor,M=m&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(i){return i instanceof TypeError}}();i.exports=M?function(i,s){if(v(i)&&!j(i,"length").writable)throw _("Cannot set read only .length");return i.length=s}:function(i,s){return i.length=s}},15790:(i,s,u)=>{var m=u(59413),v=u(10623),_=u(55449),j=Array,M=Math.max;i.exports=function(i,s,u){for(var $=v(i),W=m(s,$),X=m(void 0===u?$:u,$),Y=j(M(X-W,0)),Z=0;W{var m=u(95329);i.exports=m([].slice)},5693:(i,s,u)=>{var m=u(1052),v=u(24284),_=u(10941),j=u(99813)("species"),M=Array;i.exports=function(i){var s;return m(i)&&(s=i.constructor,(v(s)&&(s===M||m(s.prototype))||_(s)&&null===(s=s[j]))&&(s=void 0)),void 0===s?M:s}},64692:(i,s,u)=>{var m=u(5693);i.exports=function(i,s){return new(m(i))(0===s?0:s)}},82532:(i,s,u)=>{var m=u(95329),v=m({}.toString),_=m("".slice);i.exports=function(i){return _(v(i),8,-1)}},9697:(i,s,u)=>{var m=u(22885),v=u(57475),_=u(82532),j=u(99813)("toStringTag"),M=Object,$="Arguments"==_(function(){return arguments}());i.exports=m?_:function(i){var s,u,m;return void 0===i?"Undefined":null===i?"Null":"string"==typeof(u=function(i,s){try{return i[s]}catch(i){}}(s=M(i),j))?u:$?_(s):"Object"==(m=_(s))&&v(s.callee)?"Arguments":m}},91310:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},23538:i=>{i.exports=function(i,s){return{value:i,done:s}}},32029:(i,s,u)=>{var m=u(55746),v=u(65988),_=u(31887);i.exports=m?function(i,s,u){return v.f(i,s,_(1,u))}:function(i,s,u){return i[s]=u,i}},31887:i=>{i.exports=function(i,s){return{enumerable:!(1&i),configurable:!(2&i),writable:!(4&i),value:s}}},55449:(i,s,u)=>{"use strict";var m=u(83894),v=u(65988),_=u(31887);i.exports=function(i,s,u){var j=m(s);j in i?v.f(i,j,_(0,u)):i[j]=u}},29202:(i,s,u)=>{var m=u(65988);i.exports=function(i,s,u){return m.f(i,s,u)}},95929:(i,s,u)=>{var m=u(32029);i.exports=function(i,s,u,v){return v&&v.enumerable?i[s]=u:m(i,s,u),i}},75609:(i,s,u)=>{var m=u(21899),v=Object.defineProperty;i.exports=function(i,s){try{v(m,i,{value:s,configurable:!0,writable:!0})}catch(u){m[i]=s}return s}},55746:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},76616:i=>{var s="object"==typeof document&&document.all,u=void 0===s&&void 0!==s;i.exports={all:s,IS_HTMLDDA:u}},61333:(i,s,u)=>{var m=u(21899),v=u(10941),_=m.document,j=v(_)&&v(_.createElement);i.exports=function(i){return j?_.createElement(i):{}}},66796:i=>{var s=TypeError;i.exports=function(i){if(i>9007199254740991)throw s("Maximum allowed index exceeded");return i}},63281:i=>{i.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},2861:i=>{i.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""},53385:(i,s,u)=>{var m,v,_=u(21899),j=u(2861),M=_.process,$=_.Deno,W=M&&M.versions||$&&$.version,X=W&&W.v8;X&&(v=(m=X.split("."))[0]>0&&m[0]<4?1:+(m[0]+m[1])),!v&&j&&(!(m=j.match(/Edge\/(\d+)/))||m[1]>=74)&&(m=j.match(/Chrome\/(\d+)/))&&(v=+m[1]),i.exports=v},35703:(i,s,u)=>{var m=u(54058);i.exports=function(i){return m[i+"Prototype"]}},56759:i=>{i.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},76887:(i,s,u)=>{"use strict";var m=u(21899),v=u(79730),_=u(97484),j=u(57475),M=u(49677).f,$=u(37252),W=u(54058),X=u(86843),Y=u(32029),Z=u(90953),wrapConstructor=function(i){var Wrapper=function(s,u,m){if(this instanceof Wrapper){switch(arguments.length){case 0:return new i;case 1:return new i(s);case 2:return new i(s,u)}return new i(s,u,m)}return v(i,this,arguments)};return Wrapper.prototype=i.prototype,Wrapper};i.exports=function(i,s){var u,v,ee,ie,ae,ce,le,pe,de,fe=i.target,ye=i.global,be=i.stat,_e=i.proto,we=ye?m:be?m[fe]:(m[fe]||{}).prototype,Se=ye?W:W[fe]||Y(W,fe,{})[fe],xe=Se.prototype;for(ie in s)v=!(u=$(ye?ie:fe+(be?".":"#")+ie,i.forced))&&we&&Z(we,ie),ce=Se[ie],v&&(le=i.dontCallGetSet?(de=M(we,ie))&&de.value:we[ie]),ae=v&&le?le:s[ie],v&&typeof ce==typeof ae||(pe=i.bind&&v?X(ae,m):i.wrap&&v?wrapConstructor(ae):_e&&j(ae)?_(ae):ae,(i.sham||ae&&ae.sham||ce&&ce.sham)&&Y(pe,"sham",!0),Y(Se,ie,pe),_e&&(Z(W,ee=fe+"Prototype")||Y(W,ee,{}),Y(W[ee],ie,ae),i.real&&xe&&(u||!xe[ie])&&Y(xe,ie,ae)))}},95981:i=>{i.exports=function(i){try{return!!i()}catch(i){return!0}}},79730:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.apply,j=v.call;i.exports="object"==typeof Reflect&&Reflect.apply||(m?j.bind(_):function(){return j.apply(_,arguments)})},86843:(i,s,u)=>{var m=u(97484),v=u(24883),_=u(18285),j=m(m.bind);i.exports=function(i,s){return v(i),void 0===s?i:_?j(i,s):function(){return i.apply(s,arguments)}}},18285:(i,s,u)=>{var m=u(95981);i.exports=!m((function(){var i=function(){}.bind();return"function"!=typeof i||i.hasOwnProperty("prototype")}))},98308:(i,s,u)=>{"use strict";var m=u(95329),v=u(24883),_=u(10941),j=u(90953),M=u(93765),$=u(18285),W=Function,X=m([].concat),Y=m([].join),Z={};i.exports=$?W.bind:function bind(i){var s=v(this),u=s.prototype,m=M(arguments,1),$=function bound(){var u=X(m,M(arguments));return this instanceof $?function(i,s,u){if(!j(Z,s)){for(var m=[],v=0;v{var m=u(18285),v=Function.prototype.call;i.exports=m?v.bind(v):function(){return v.apply(v,arguments)}},79417:(i,s,u)=>{var m=u(55746),v=u(90953),_=Function.prototype,j=m&&Object.getOwnPropertyDescriptor,M=v(_,"name"),$=M&&"something"===function something(){}.name,W=M&&(!m||m&&j(_,"name").configurable);i.exports={EXISTS:M,PROPER:$,CONFIGURABLE:W}},45526:(i,s,u)=>{var m=u(95329),v=u(24883);i.exports=function(i,s,u){try{return m(v(Object.getOwnPropertyDescriptor(i,s)[u]))}catch(i){}}},97484:(i,s,u)=>{var m=u(82532),v=u(95329);i.exports=function(i){if("Function"===m(i))return v(i)}},95329:(i,s,u)=>{var m=u(18285),v=Function.prototype,_=v.call,j=m&&v.bind.bind(_,_);i.exports=m?j:function(i){return function(){return _.apply(i,arguments)}}},626:(i,s,u)=>{var m=u(54058),v=u(21899),_=u(57475),aFunction=function(i){return _(i)?i:void 0};i.exports=function(i,s){return arguments.length<2?aFunction(m[i])||aFunction(v[i]):m[i]&&m[i][s]||v[i]&&v[i][s]}},33323:(i,s,u)=>{var m=u(95329),v=u(1052),_=u(57475),j=u(82532),M=u(85803),$=m([].push);i.exports=function(i){if(_(i))return i;if(v(i)){for(var s=i.length,u=[],m=0;m{var m=u(24883),v=u(82119);i.exports=function(i,s){var u=i[s];return v(u)?void 0:m(u)}},21899:function(i,s,u){var check=function(i){return i&&i.Math==Math&&i};i.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof u.g&&u.g)||function(){return this}()||this||Function("return this")()},90953:(i,s,u)=>{var m=u(95329),v=u(89678),_=m({}.hasOwnProperty);i.exports=Object.hasOwn||function hasOwn(i,s){return _(v(i),s)}},27748:i=>{i.exports={}},15463:(i,s,u)=>{var m=u(626);i.exports=m("document","documentElement")},2840:(i,s,u)=>{var m=u(55746),v=u(95981),_=u(61333);i.exports=!m&&!v((function(){return 7!=Object.defineProperty(_("div"),"a",{get:function(){return 7}}).a}))},37026:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(82532),j=Object,M=m("".split);i.exports=v((function(){return!j("z").propertyIsEnumerable(0)}))?function(i){return"String"==_(i)?M(i,""):j(i)}:j},81302:(i,s,u)=>{var m=u(95329),v=u(57475),_=u(63030),j=m(Function.toString);v(_.inspectSource)||(_.inspectSource=function(i){return j(i)}),i.exports=_.inspectSource},45402:(i,s,u)=>{var m,v,_,j=u(47093),M=u(21899),$=u(10941),W=u(32029),X=u(90953),Y=u(63030),Z=u(44262),ee=u(27748),ie="Object already initialized",ae=M.TypeError,ce=M.WeakMap;if(j||Y.state){var le=Y.state||(Y.state=new ce);le.get=le.get,le.has=le.has,le.set=le.set,m=function(i,s){if(le.has(i))throw ae(ie);return s.facade=i,le.set(i,s),s},v=function(i){return le.get(i)||{}},_=function(i){return le.has(i)}}else{var pe=Z("state");ee[pe]=!0,m=function(i,s){if(X(i,pe))throw ae(ie);return s.facade=i,W(i,pe,s),s},v=function(i){return X(i,pe)?i[pe]:{}},_=function(i){return X(i,pe)}}i.exports={set:m,get:v,has:_,enforce:function(i){return _(i)?v(i):m(i,{})},getterFor:function(i){return function(s){var u;if(!$(s)||(u=v(s)).type!==i)throw ae("Incompatible receiver, "+i+" required");return u}}}},1052:(i,s,u)=>{var m=u(82532);i.exports=Array.isArray||function isArray(i){return"Array"==m(i)}},57475:(i,s,u)=>{var m=u(76616),v=m.all;i.exports=m.IS_HTMLDDA?function(i){return"function"==typeof i||i===v}:function(i){return"function"==typeof i}},24284:(i,s,u)=>{var m=u(95329),v=u(95981),_=u(57475),j=u(9697),M=u(626),$=u(81302),noop=function(){},W=[],X=M("Reflect","construct"),Y=/^\s*(?:class|function)\b/,Z=m(Y.exec),ee=!Y.exec(noop),ie=function isConstructor(i){if(!_(i))return!1;try{return X(noop,W,i),!0}catch(i){return!1}},ae=function isConstructor(i){if(!_(i))return!1;switch(j(i)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ee||!!Z(Y,$(i))}catch(i){return!0}};ae.sham=!0,i.exports=!X||v((function(){var i;return ie(ie.call)||!ie(Object)||!ie((function(){i=!0}))||i}))?ae:ie},37252:(i,s,u)=>{var m=u(95981),v=u(57475),_=/#|\.prototype\./,isForced=function(i,s){var u=M[j(i)];return u==W||u!=$&&(v(s)?m(s):!!s)},j=isForced.normalize=function(i){return String(i).replace(_,".").toLowerCase()},M=isForced.data={},$=isForced.NATIVE="N",W=isForced.POLYFILL="P";i.exports=isForced},82119:i=>{i.exports=function(i){return null==i}},10941:(i,s,u)=>{var m=u(57475),v=u(76616),_=v.all;i.exports=v.IS_HTMLDDA?function(i){return"object"==typeof i?null!==i:m(i)||i===_}:function(i){return"object"==typeof i?null!==i:m(i)}},82529:i=>{i.exports=!0},56664:(i,s,u)=>{var m=u(626),v=u(57475),_=u(7046),j=u(32302),M=Object;i.exports=j?function(i){return"symbol"==typeof i}:function(i){var s=m("Symbol");return v(s)&&_(s.prototype,M(i))}},53847:(i,s,u)=>{"use strict";var m=u(35143).IteratorPrototype,v=u(29290),_=u(31887),j=u(90904),M=u(12077),returnThis=function(){return this};i.exports=function(i,s,u,$){var W=s+" Iterator";return i.prototype=v(m,{next:_(+!$,u)}),j(i,W,!1,!0),M[W]=returnThis,i}},75105:(i,s,u)=>{"use strict";var m=u(76887),v=u(78834),_=u(82529),j=u(79417),M=u(57475),$=u(53847),W=u(249),X=u(88929),Y=u(90904),Z=u(32029),ee=u(95929),ie=u(99813),ae=u(12077),ce=u(35143),le=j.PROPER,pe=j.CONFIGURABLE,de=ce.IteratorPrototype,fe=ce.BUGGY_SAFARI_ITERATORS,ye=ie("iterator"),be="keys",_e="values",we="entries",returnThis=function(){return this};i.exports=function(i,s,u,j,ie,ce,Se){$(u,s,j);var xe,Pe,Ie,getIterationMethod=function(i){if(i===ie&&Ve)return Ve;if(!fe&&i in qe)return qe[i];switch(i){case be:return function keys(){return new u(this,i)};case _e:return function values(){return new u(this,i)};case we:return function entries(){return new u(this,i)}}return function(){return new u(this)}},Te=s+" Iterator",Re=!1,qe=i.prototype,ze=qe[ye]||qe["@@iterator"]||ie&&qe[ie],Ve=!fe&&ze||getIterationMethod(ie),We="Array"==s&&qe.entries||ze;if(We&&(xe=W(We.call(new i)))!==Object.prototype&&xe.next&&(_||W(xe)===de||(X?X(xe,de):M(xe[ye])||ee(xe,ye,returnThis)),Y(xe,Te,!0,!0),_&&(ae[Te]=returnThis)),le&&ie==_e&&ze&&ze.name!==_e&&(!_&&pe?Z(qe,"name",_e):(Re=!0,Ve=function values(){return v(ze,this)})),ie)if(Pe={values:getIterationMethod(_e),keys:ce?Ve:getIterationMethod(be),entries:getIterationMethod(we)},Se)for(Ie in Pe)(fe||Re||!(Ie in qe))&&ee(qe,Ie,Pe[Ie]);else m({target:s,proto:!0,forced:fe||Re},Pe);return _&&!Se||qe[ye]===Ve||ee(qe,ye,Ve,{name:ie}),ae[s]=Ve,Pe}},35143:(i,s,u)=>{"use strict";var m,v,_,j=u(95981),M=u(57475),$=u(10941),W=u(29290),X=u(249),Y=u(95929),Z=u(99813),ee=u(82529),ie=Z("iterator"),ae=!1;[].keys&&("next"in(_=[].keys())?(v=X(X(_)))!==Object.prototype&&(m=v):ae=!0),!$(m)||j((function(){var i={};return m[ie].call(i)!==i}))?m={}:ee&&(m=W(m)),M(m[ie])||Y(m,ie,(function(){return this})),i.exports={IteratorPrototype:m,BUGGY_SAFARI_ITERATORS:ae}},12077:i=>{i.exports={}},10623:(i,s,u)=>{var m=u(43057);i.exports=function(i){return m(i.length)}},35331:i=>{var s=Math.ceil,u=Math.floor;i.exports=Math.trunc||function trunc(i){var m=+i;return(m>0?u:s)(m)}},24420:(i,s,u)=>{"use strict";var m=u(55746),v=u(95329),_=u(78834),j=u(95981),M=u(14771),$=u(87857),W=u(36760),X=u(89678),Y=u(37026),Z=Object.assign,ee=Object.defineProperty,ie=v([].concat);i.exports=!Z||j((function(){if(m&&1!==Z({b:1},Z(ee({},"a",{enumerable:!0,get:function(){ee(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var i={},s={},u=Symbol(),v="abcdefghijklmnopqrst";return i[u]=7,v.split("").forEach((function(i){s[i]=i})),7!=Z({},i)[u]||M(Z({},s)).join("")!=v}))?function assign(i,s){for(var u=X(i),v=arguments.length,j=1,Z=$.f,ee=W.f;v>j;)for(var ae,ce=Y(arguments[j++]),le=Z?ie(M(ce),Z(ce)):M(ce),pe=le.length,de=0;pe>de;)ae=le[de++],m&&!_(ee,ce,ae)||(u[ae]=ce[ae]);return u}:Z},29290:(i,s,u)=>{var m,v=u(96059),_=u(59938),j=u(56759),M=u(27748),$=u(15463),W=u(61333),X=u(44262),Y="prototype",Z="script",ee=X("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(i){return"<"+Z+">"+i+""+Z+">"},NullProtoObjectViaActiveX=function(i){i.write(scriptTag("")),i.close();var s=i.parentWindow.Object;return i=null,s},NullProtoObject=function(){try{m=new ActiveXObject("htmlfile")}catch(i){}var i,s,u;NullProtoObject="undefined"!=typeof document?document.domain&&m?NullProtoObjectViaActiveX(m):(s=W("iframe"),u="java"+Z+":",s.style.display="none",$.appendChild(s),s.src=String(u),(i=s.contentWindow.document).open(),i.write(scriptTag("document.F=Object")),i.close(),i.F):NullProtoObjectViaActiveX(m);for(var v=j.length;v--;)delete NullProtoObject[Y][j[v]];return NullProtoObject()};M[ee]=!0,i.exports=Object.create||function create(i,s){var u;return null!==i?(EmptyConstructor[Y]=v(i),u=new EmptyConstructor,EmptyConstructor[Y]=null,u[ee]=i):u=NullProtoObject(),void 0===s?u:_.f(u,s)}},59938:(i,s,u)=>{var m=u(55746),v=u(83937),_=u(65988),j=u(96059),M=u(74529),$=u(14771);s.f=m&&!v?Object.defineProperties:function defineProperties(i,s){j(i);for(var u,m=M(s),v=$(s),W=v.length,X=0;W>X;)_.f(i,u=v[X++],m[u]);return i}},65988:(i,s,u)=>{var m=u(55746),v=u(2840),_=u(83937),j=u(96059),M=u(83894),$=TypeError,W=Object.defineProperty,X=Object.getOwnPropertyDescriptor,Y="enumerable",Z="configurable",ee="writable";s.f=m?_?function defineProperty(i,s,u){if(j(i),s=M(s),j(u),"function"==typeof i&&"prototype"===s&&"value"in u&&ee in u&&!u[ee]){var m=X(i,s);m&&m[ee]&&(i[s]=u.value,u={configurable:Z in u?u[Z]:m[Z],enumerable:Y in u?u[Y]:m[Y],writable:!1})}return W(i,s,u)}:W:function defineProperty(i,s,u){if(j(i),s=M(s),j(u),v)try{return W(i,s,u)}catch(i){}if("get"in u||"set"in u)throw $("Accessors not supported");return"value"in u&&(i[s]=u.value),i}},49677:(i,s,u)=>{var m=u(55746),v=u(78834),_=u(36760),j=u(31887),M=u(74529),$=u(83894),W=u(90953),X=u(2840),Y=Object.getOwnPropertyDescriptor;s.f=m?Y:function getOwnPropertyDescriptor(i,s){if(i=M(i),s=$(s),X)try{return Y(i,s)}catch(i){}if(W(i,s))return j(!v(_.f,i,s),i[s])}},684:(i,s,u)=>{var m=u(82532),v=u(74529),_=u(10946).f,j=u(15790),M="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];i.exports.f=function getOwnPropertyNames(i){return M&&"Window"==m(i)?function(i){try{return _(i)}catch(i){return j(M)}}(i):_(v(i))}},10946:(i,s,u)=>{var m=u(55629),v=u(56759).concat("length","prototype");s.f=Object.getOwnPropertyNames||function getOwnPropertyNames(i){return m(i,v)}},87857:(i,s)=>{s.f=Object.getOwnPropertySymbols},249:(i,s,u)=>{var m=u(90953),v=u(57475),_=u(89678),j=u(44262),M=u(91310),$=j("IE_PROTO"),W=Object,X=W.prototype;i.exports=M?W.getPrototypeOf:function(i){var s=_(i);if(m(s,$))return s[$];var u=s.constructor;return v(u)&&s instanceof u?u.prototype:s instanceof W?X:null}},7046:(i,s,u)=>{var m=u(95329);i.exports=m({}.isPrototypeOf)},55629:(i,s,u)=>{var m=u(95329),v=u(90953),_=u(74529),j=u(31692).indexOf,M=u(27748),$=m([].push);i.exports=function(i,s){var u,m=_(i),W=0,X=[];for(u in m)!v(M,u)&&v(m,u)&&$(X,u);for(;s.length>W;)v(m,u=s[W++])&&(~j(X,u)||$(X,u));return X}},14771:(i,s,u)=>{var m=u(55629),v=u(56759);i.exports=Object.keys||function keys(i){return m(i,v)}},36760:(i,s)=>{"use strict";var u={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,v=m&&!u.call({1:2},1);s.f=v?function propertyIsEnumerable(i){var s=m(this,i);return!!s&&s.enumerable}:u},88929:(i,s,u)=>{var m=u(45526),v=u(96059),_=u(11851);i.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i,s=!1,u={};try{(i=m(Object.prototype,"__proto__","set"))(u,[]),s=u instanceof Array}catch(i){}return function setPrototypeOf(u,m){return v(u),_(m),s?i(u,m):u.__proto__=m,u}}():void 0)},95623:(i,s,u)=>{"use strict";var m=u(22885),v=u(9697);i.exports=m?{}.toString:function toString(){return"[object "+v(this)+"]"}},39811:(i,s,u)=>{var m=u(78834),v=u(57475),_=u(10941),j=TypeError;i.exports=function(i,s){var u,M;if("string"===s&&v(u=i.toString)&&!_(M=m(u,i)))return M;if(v(u=i.valueOf)&&!_(M=m(u,i)))return M;if("string"!==s&&v(u=i.toString)&&!_(M=m(u,i)))return M;throw j("Can't convert object to primitive value")}},31136:(i,s,u)=>{var m=u(626),v=u(95329),_=u(10946),j=u(87857),M=u(96059),$=v([].concat);i.exports=m("Reflect","ownKeys")||function ownKeys(i){var s=_.f(M(i)),u=j.f;return u?$(s,u(i)):s}},54058:i=>{i.exports={}},48219:(i,s,u)=>{var m=u(82119),v=TypeError;i.exports=function(i){if(m(i))throw v("Can't call method on "+i);return i}},90904:(i,s,u)=>{var m=u(22885),v=u(65988).f,_=u(32029),j=u(90953),M=u(95623),$=u(99813)("toStringTag");i.exports=function(i,s,u,W){if(i){var X=u?i:i.prototype;j(X,$)||v(X,$,{configurable:!0,value:s}),W&&!m&&_(X,"toString",M)}}},44262:(i,s,u)=>{var m=u(68726),v=u(99418),_=m("keys");i.exports=function(i){return _[i]||(_[i]=v(i))}},63030:(i,s,u)=>{var m=u(21899),v=u(75609),_="__core-js_shared__",j=m[_]||v(_,{});i.exports=j},68726:(i,s,u)=>{var m=u(82529),v=u(63030);(i.exports=function(i,s){return v[i]||(v[i]=void 0!==s?s:{})})("versions",[]).push({version:"3.31.1",mode:m?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"})},64620:(i,s,u)=>{var m=u(95329),v=u(62435),_=u(85803),j=u(48219),M=m("".charAt),$=m("".charCodeAt),W=m("".slice),createMethod=function(i){return function(s,u){var m,X,Y=_(j(s)),Z=v(u),ee=Y.length;return Z<0||Z>=ee?i?"":void 0:(m=$(Y,Z))<55296||m>56319||Z+1===ee||(X=$(Y,Z+1))<56320||X>57343?i?M(Y,Z):m:i?W(Y,Z,Z+2):X-56320+(m-55296<<10)+65536}};i.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},63405:(i,s,u)=>{var m=u(53385),v=u(95981),_=u(21899).String;i.exports=!!Object.getOwnPropertySymbols&&!v((function(){var i=Symbol();return!_(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&m&&m<41}))},29630:(i,s,u)=>{var m=u(78834),v=u(626),_=u(99813),j=u(95929);i.exports=function(){var i=v("Symbol"),s=i&&i.prototype,u=s&&s.valueOf,M=_("toPrimitive");s&&!s[M]&&j(s,M,(function(i){return m(u,this)}),{arity:1})}},32087:(i,s,u)=>{var m=u(626),v=u(95329),_=m("Symbol"),j=_.keyFor,M=v(_.prototype.valueOf);i.exports=_.isRegisteredSymbol||function isRegisteredSymbol(i){try{return void 0!==j(M(i))}catch(i){return!1}}},96559:(i,s,u)=>{for(var m=u(68726),v=u(626),_=u(95329),j=u(56664),M=u(99813),$=v("Symbol"),W=$.isWellKnownSymbol,X=v("Object","getOwnPropertyNames"),Y=_($.prototype.valueOf),Z=m("wks"),ee=0,ie=X($),ae=ie.length;ee{var m=u(63405);i.exports=m&&!!Symbol.for&&!!Symbol.keyFor},59413:(i,s,u)=>{var m=u(62435),v=Math.max,_=Math.min;i.exports=function(i,s){var u=m(i);return u<0?v(u+s,0):_(u,s)}},74529:(i,s,u)=>{var m=u(37026),v=u(48219);i.exports=function(i){return m(v(i))}},62435:(i,s,u)=>{var m=u(35331);i.exports=function(i){var s=+i;return s!=s||0===s?0:m(s)}},43057:(i,s,u)=>{var m=u(62435),v=Math.min;i.exports=function(i){return i>0?v(m(i),9007199254740991):0}},89678:(i,s,u)=>{var m=u(48219),v=Object;i.exports=function(i){return v(m(i))}},46935:(i,s,u)=>{var m=u(78834),v=u(10941),_=u(56664),j=u(14229),M=u(39811),$=u(99813),W=TypeError,X=$("toPrimitive");i.exports=function(i,s){if(!v(i)||_(i))return i;var u,$=j(i,X);if($){if(void 0===s&&(s="default"),u=m($,i,s),!v(u)||_(u))return u;throw W("Can't convert object to primitive value")}return void 0===s&&(s="number"),M(i,s)}},83894:(i,s,u)=>{var m=u(46935),v=u(56664);i.exports=function(i){var s=m(i,"string");return v(s)?s:s+""}},22885:(i,s,u)=>{var m={};m[u(99813)("toStringTag")]="z",i.exports="[object z]"===String(m)},85803:(i,s,u)=>{var m=u(9697),v=String;i.exports=function(i){if("Symbol"===m(i))throw TypeError("Cannot convert a Symbol value to a string");return v(i)}},69826:i=>{var s=String;i.exports=function(i){try{return s(i)}catch(i){return"Object"}}},99418:(i,s,u)=>{var m=u(95329),v=0,_=Math.random(),j=m(1..toString);i.exports=function(i){return"Symbol("+(void 0===i?"":i)+")_"+j(++v+_,36)}},32302:(i,s,u)=>{var m=u(63405);i.exports=m&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},83937:(i,s,u)=>{var m=u(55746),v=u(95981);i.exports=m&&v((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},47093:(i,s,u)=>{var m=u(21899),v=u(57475),_=m.WeakMap;i.exports=v(_)&&/native code/.test(String(_))},73464:(i,s,u)=>{var m=u(54058),v=u(90953),_=u(11477),j=u(65988).f;i.exports=function(i){var s=m.Symbol||(m.Symbol={});v(s,i)||j(s,i,{value:_.f(i)})}},11477:(i,s,u)=>{var m=u(99813);s.f=m},99813:(i,s,u)=>{var m=u(21899),v=u(68726),_=u(90953),j=u(99418),M=u(63405),$=u(32302),W=m.Symbol,X=v("wks"),Y=$?W.for||W:W&&W.withoutSetter||j;i.exports=function(i){return _(X,i)||(X[i]=M&&_(W,i)?W[i]:Y("Symbol."+i)),X[i]}},85906:(i,s,u)=>{"use strict";var m=u(76887),v=u(95981),_=u(1052),j=u(10941),M=u(89678),$=u(10623),W=u(66796),X=u(55449),Y=u(64692),Z=u(50568),ee=u(99813),ie=u(53385),ae=ee("isConcatSpreadable"),ce=ie>=51||!v((function(){var i=[];return i[ae]=!1,i.concat()[0]!==i})),isConcatSpreadable=function(i){if(!j(i))return!1;var s=i[ae];return void 0!==s?!!s:_(i)};m({target:"Array",proto:!0,arity:1,forced:!ce||!Z("concat")},{concat:function concat(i){var s,u,m,v,_,j=M(this),Z=Y(j,0),ee=0;for(s=-1,m=arguments.length;s{"use strict";var m=u(76887),v=u(3610).filter;m({target:"Array",proto:!0,forced:!u(50568)("filter")},{filter:function filter(i){return v(this,i,arguments.length>1?arguments[1]:void 0)}})},2437:(i,s,u)=>{"use strict";var m=u(76887),v=u(56837);m({target:"Array",proto:!0,forced:[].forEach!=v},{forEach:v})},99076:(i,s,u)=>{"use strict";var m=u(76887),v=u(97484),_=u(31692).indexOf,j=u(34194),M=v([].indexOf),$=!!M&&1/M([1],1,-0)<0;m({target:"Array",proto:!0,forced:$||!j("indexOf")},{indexOf:function indexOf(i){var s=arguments.length>1?arguments[1]:void 0;return $?M(this,i,s)||0:_(this,i,s)}})},66274:(i,s,u)=>{"use strict";var m=u(74529),v=u(18479),_=u(12077),j=u(45402),M=u(65988).f,$=u(75105),W=u(23538),X=u(82529),Y=u(55746),Z="Array Iterator",ee=j.set,ie=j.getterFor(Z);i.exports=$(Array,"Array",(function(i,s){ee(this,{type:Z,target:m(i),index:0,kind:s})}),(function(){var i=ie(this),s=i.target,u=i.kind,m=i.index++;return!s||m>=s.length?(i.target=void 0,W(void 0,!0)):W("keys"==u?m:"values"==u?s[m]:[m,s[m]],!1)}),"values");var ae=_.Arguments=_.Array;if(v("keys"),v("values"),v("entries"),!X&&Y&&"values"!==ae.name)try{M(ae,"name",{value:"values"})}catch(i){}},48528:(i,s,u)=>{"use strict";var m=u(76887),v=u(89678),_=u(10623),j=u(89779),M=u(66796);m({target:"Array",proto:!0,arity:1,forced:u(95981)((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(i){return i instanceof TypeError}}()},{push:function push(i){var s=v(this),u=_(s),m=arguments.length;M(u+m);for(var $=0;${},73381:(i,s,u)=>{var m=u(76887),v=u(98308);m({target:"Function",proto:!0,forced:Function.bind!==v},{bind:v})},32619:(i,s,u)=>{var m=u(76887),v=u(626),_=u(79730),j=u(78834),M=u(95329),$=u(95981),W=u(57475),X=u(56664),Y=u(93765),Z=u(33323),ee=u(63405),ie=String,ae=v("JSON","stringify"),ce=M(/./.exec),le=M("".charAt),pe=M("".charCodeAt),de=M("".replace),fe=M(1..toString),ye=/[\uD800-\uDFFF]/g,be=/^[\uD800-\uDBFF]$/,_e=/^[\uDC00-\uDFFF]$/,we=!ee||$((function(){var i=v("Symbol")();return"[null]"!=ae([i])||"{}"!=ae({a:i})||"{}"!=ae(Object(i))})),Se=$((function(){return'"\\udf06\\ud834"'!==ae("\udf06\ud834")||'"\\udead"'!==ae("\udead")})),stringifyWithSymbolsFix=function(i,s){var u=Y(arguments),m=Z(s);if(W(m)||void 0!==i&&!X(i))return u[1]=function(i,s){if(W(m)&&(s=j(m,this,ie(i),s)),!X(s))return s},_(ae,null,u)},fixIllFormed=function(i,s,u){var m=le(u,s-1),v=le(u,s+1);return ce(be,i)&&!ce(_e,v)||ce(_e,i)&&!ce(be,m)?"\\u"+fe(pe(i,0),16):i};ae&&m({target:"JSON",stat:!0,arity:3,forced:we||Se},{stringify:function stringify(i,s,u){var m=Y(arguments),v=_(we?stringifyWithSymbolsFix:ae,null,m);return Se&&"string"==typeof v?de(v,ye,fixIllFormed):v}})},69120:(i,s,u)=>{var m=u(21899);u(90904)(m.JSON,"JSON",!0)},79413:()=>{},49221:(i,s,u)=>{var m=u(76887),v=u(24420);m({target:"Object",stat:!0,arity:2,forced:Object.assign!==v},{assign:v})},74979:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(59938).f;m({target:"Object",stat:!0,forced:Object.defineProperties!==_,sham:!v},{defineProperties:_})},86450:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(65988).f;m({target:"Object",stat:!0,forced:Object.defineProperty!==_,sham:!v},{defineProperty:_})},46924:(i,s,u)=>{var m=u(76887),v=u(95981),_=u(74529),j=u(49677).f,M=u(55746);m({target:"Object",stat:!0,forced:!M||v((function(){j(1)})),sham:!M},{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(i,s){return j(_(i),s)}})},88482:(i,s,u)=>{var m=u(76887),v=u(55746),_=u(31136),j=u(74529),M=u(49677),$=u(55449);m({target:"Object",stat:!0,sham:!v},{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(i){for(var s,u,m=j(i),v=M.f,W=_(m),X={},Y=0;W.length>Y;)void 0!==(u=v(m,s=W[Y++]))&&$(X,s,u);return X}})},37144:(i,s,u)=>{var m=u(76887),v=u(63405),_=u(95981),j=u(87857),M=u(89678);m({target:"Object",stat:!0,forced:!v||_((function(){j.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(i){var s=j.f;return s?s(M(i)):[]}})},21724:(i,s,u)=>{var m=u(76887),v=u(89678),_=u(14771);m({target:"Object",stat:!0,forced:u(95981)((function(){_(1)}))},{keys:function keys(i){return _(v(i))}})},55967:()=>{},1502:()=>{},77971:(i,s,u)=>{"use strict";var m=u(64620).charAt,v=u(85803),_=u(45402),j=u(75105),M=u(23538),$="String Iterator",W=_.set,X=_.getterFor($);j(String,"String",(function(i){W(this,{type:$,string:v(i),index:0})}),(function next(){var i,s=X(this),u=s.string,v=s.index;return v>=u.length?M(void 0,!0):(i=m(u,v),s.index+=i.length,M(i,!1))}))},8555:(i,s,u)=>{u(73464)("asyncIterator")},48616:(i,s,u)=>{"use strict";var m=u(76887),v=u(21899),_=u(78834),j=u(95329),M=u(82529),$=u(55746),W=u(63405),X=u(95981),Y=u(90953),Z=u(7046),ee=u(96059),ie=u(74529),ae=u(83894),ce=u(85803),le=u(31887),pe=u(29290),de=u(14771),fe=u(10946),ye=u(684),be=u(87857),_e=u(49677),we=u(65988),Se=u(59938),xe=u(36760),Pe=u(95929),Ie=u(29202),Te=u(68726),Re=u(44262),qe=u(27748),ze=u(99418),Ve=u(99813),We=u(11477),He=u(73464),Xe=u(29630),Ye=u(90904),Qe=u(45402),et=u(3610).forEach,tt=Re("hidden"),rt="Symbol",nt="prototype",ot=Qe.set,it=Qe.getterFor(rt),at=Object[nt],st=v.Symbol,ct=st&&st[nt],lt=v.TypeError,ut=v.QObject,pt=_e.f,ht=we.f,dt=ye.f,mt=xe.f,yt=j([].push),gt=Te("symbols"),vt=Te("op-symbols"),bt=Te("wks"),_t=!ut||!ut[nt]||!ut[nt].findChild,wt=$&&X((function(){return 7!=pe(ht({},"a",{get:function(){return ht(this,"a",{value:7}).a}})).a}))?function(i,s,u){var m=pt(at,s);m&&delete at[s],ht(i,s,u),m&&i!==at&&ht(at,s,m)}:ht,wrap=function(i,s){var u=gt[i]=pe(ct);return ot(u,{type:rt,tag:i,description:s}),$||(u.description=s),u},Et=function defineProperty(i,s,u){i===at&&Et(vt,s,u),ee(i);var m=ae(s);return ee(u),Y(gt,m)?(u.enumerable?(Y(i,tt)&&i[tt][m]&&(i[tt][m]=!1),u=pe(u,{enumerable:le(0,!1)})):(Y(i,tt)||ht(i,tt,le(1,{})),i[tt][m]=!0),wt(i,m,u)):ht(i,m,u)},St=function defineProperties(i,s){ee(i);var u=ie(s),m=de(u).concat($getOwnPropertySymbols(u));return et(m,(function(s){$&&!_(xt,u,s)||Et(i,s,u[s])})),i},xt=function propertyIsEnumerable(i){var s=ae(i),u=_(mt,this,s);return!(this===at&&Y(gt,s)&&!Y(vt,s))&&(!(u||!Y(this,s)||!Y(gt,s)||Y(this,tt)&&this[tt][s])||u)},Ot=function getOwnPropertyDescriptor(i,s){var u=ie(i),m=ae(s);if(u!==at||!Y(gt,m)||Y(vt,m)){var v=pt(u,m);return!v||!Y(gt,m)||Y(u,tt)&&u[tt][m]||(v.enumerable=!0),v}},kt=function getOwnPropertyNames(i){var s=dt(ie(i)),u=[];return et(s,(function(i){Y(gt,i)||Y(qe,i)||yt(u,i)})),u},$getOwnPropertySymbols=function(i){var s=i===at,u=dt(s?vt:ie(i)),m=[];return et(u,(function(i){!Y(gt,i)||s&&!Y(at,i)||yt(m,gt[i])})),m};W||(Pe(ct=(st=function Symbol(){if(Z(ct,this))throw lt("Symbol is not a constructor");var i=arguments.length&&void 0!==arguments[0]?ce(arguments[0]):void 0,s=ze(i),setter=function(i){this===at&&_(setter,vt,i),Y(this,tt)&&Y(this[tt],s)&&(this[tt][s]=!1),wt(this,s,le(1,i))};return $&&_t&&wt(at,s,{configurable:!0,set:setter}),wrap(s,i)})[nt],"toString",(function toString(){return it(this).tag})),Pe(st,"withoutSetter",(function(i){return wrap(ze(i),i)})),xe.f=xt,we.f=Et,Se.f=St,_e.f=Ot,fe.f=ye.f=kt,be.f=$getOwnPropertySymbols,We.f=function(i){return wrap(Ve(i),i)},$&&(Ie(ct,"description",{configurable:!0,get:function description(){return it(this).description}}),M||Pe(at,"propertyIsEnumerable",xt,{unsafe:!0}))),m({global:!0,constructor:!0,wrap:!0,forced:!W,sham:!W},{Symbol:st}),et(de(bt),(function(i){He(i)})),m({target:rt,stat:!0,forced:!W},{useSetter:function(){_t=!0},useSimple:function(){_t=!1}}),m({target:"Object",stat:!0,forced:!W,sham:!$},{create:function create(i,s){return void 0===s?pe(i):St(pe(i),s)},defineProperty:Et,defineProperties:St,getOwnPropertyDescriptor:Ot}),m({target:"Object",stat:!0,forced:!W},{getOwnPropertyNames:kt}),Xe(),Ye(st,rt),qe[tt]=!0},52615:()=>{},64523:(i,s,u)=>{var m=u(76887),v=u(626),_=u(90953),j=u(85803),M=u(68726),$=u(34680),W=M("string-to-symbol-registry"),X=M("symbol-to-string-registry");m({target:"Symbol",stat:!0,forced:!$},{for:function(i){var s=j(i);if(_(W,s))return W[s];var u=v("Symbol")(s);return W[s]=u,X[u]=s,u}})},21732:(i,s,u)=>{u(73464)("hasInstance")},35903:(i,s,u)=>{u(73464)("isConcatSpreadable")},1825:(i,s,u)=>{u(73464)("iterator")},35824:(i,s,u)=>{u(48616),u(64523),u(38608),u(32619),u(37144)},38608:(i,s,u)=>{var m=u(76887),v=u(90953),_=u(56664),j=u(69826),M=u(68726),$=u(34680),W=M("symbol-to-string-registry");m({target:"Symbol",stat:!0,forced:!$},{keyFor:function keyFor(i){if(!_(i))throw TypeError(j(i)+" is not a symbol");if(v(W,i))return W[i]}})},45915:(i,s,u)=>{u(73464)("matchAll")},28394:(i,s,u)=>{u(73464)("match")},61766:(i,s,u)=>{u(73464)("replace")},62737:(i,s,u)=>{u(73464)("search")},89911:(i,s,u)=>{u(73464)("species")},74315:(i,s,u)=>{u(73464)("split")},63131:(i,s,u)=>{var m=u(73464),v=u(29630);m("toPrimitive"),v()},64714:(i,s,u)=>{var m=u(626),v=u(73464),_=u(90904);v("toStringTag"),_(m("Symbol"),"Symbol")},70659:(i,s,u)=>{u(73464)("unscopables")},97522:(i,s,u)=>{var m=u(99813),v=u(65988).f,_=m("metadata"),j=Function.prototype;void 0===j[_]&&v(j,_,{value:null})},28783:(i,s,u)=>{u(73464)("asyncDispose")},43975:(i,s,u)=>{u(73464)("dispose")},97618:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0},{isRegisteredSymbol:u(32087)})},22731:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,name:"isRegisteredSymbol"},{isRegistered:u(32087)})},6989:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,forced:!0},{isWellKnownSymbol:u(96559)})},85605:(i,s,u)=>{u(76887)({target:"Symbol",stat:!0,name:"isWellKnownSymbol",forced:!0},{isWellKnown:u(96559)})},65799:(i,s,u)=>{u(73464)("matcher")},31943:(i,s,u)=>{u(73464)("metadataKey")},45414:(i,s,u)=>{u(73464)("metadata")},46774:(i,s,u)=>{u(73464)("observable")},80620:(i,s,u)=>{u(73464)("patternMatch")},36172:(i,s,u)=>{u(73464)("replaceAll")},7634:(i,s,u)=>{u(66274);var m=u(63281),v=u(21899),_=u(9697),j=u(32029),M=u(12077),$=u(99813)("toStringTag");for(var W in m){var X=v[W],Y=X&&X.prototype;Y&&_(Y)!==$&&j(Y,$,W),M[W]=M.Array}},49216:(i,s,u)=>{var m=u(99324);i.exports=m},28196:(i,s,u)=>{var m=u(16246);i.exports=m},11955:(i,s,u)=>{var m=u(2480);i.exports=m},46279:(i,s,u)=>{u(7634);var m=u(9697),v=u(90953),_=u(7046),j=u(49216),M=Array.prototype,$={DOMTokenList:!0,NodeList:!0};i.exports=function(i){var s=i.forEach;return i===M||_(M,i)&&s===M.forEach||v($,m(i))?j:s}},19373:(i,s,u)=>{var m=u(34570);i.exports=m},52759:(i,s,u)=>{var m=u(93993);i.exports=m},63383:(i,s,u)=>{var m=u(45999);i.exports=m},57396:(i,s,u)=>{var m=u(7702);i.exports=m},41910:(i,s,u)=>{var m=u(48171);i.exports=m},79427:(i,s,u)=>{var m=u(286);i.exports=m},62857:(i,s,u)=>{var m=u(92766);i.exports=m},9534:(i,s,u)=>{var m=u(30498);i.exports=m},23059:(i,s,u)=>{var m=u(48494);i.exports=m},92547:(i,s,u)=>{var m=u(57473);u(7634),i.exports=m},46509:(i,s,u)=>{var m=u(24227);u(7634),i.exports=m},35774:(i,s,u)=>{var m=u(62978);i.exports=m},31905:function(){!function(i){!function(s){var u="URLSearchParams"in i,m="Symbol"in i&&"iterator"in Symbol,v="FileReader"in i&&"Blob"in i&&function(){try{return new Blob,!0}catch(i){return!1}}(),_="FormData"in i,j="ArrayBuffer"in i;if(j)var M=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],$=ArrayBuffer.isView||function(i){return i&&M.indexOf(Object.prototype.toString.call(i))>-1};function normalizeName(i){if("string"!=typeof i&&(i=String(i)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(i))throw new TypeError("Invalid character in header field name");return i.toLowerCase()}function normalizeValue(i){return"string"!=typeof i&&(i=String(i)),i}function iteratorFor(i){var s={next:function(){var s=i.shift();return{done:void 0===s,value:s}}};return m&&(s[Symbol.iterator]=function(){return s}),s}function Headers(i){this.map={},i instanceof Headers?i.forEach((function(i,s){this.append(s,i)}),this):Array.isArray(i)?i.forEach((function(i){this.append(i[0],i[1])}),this):i&&Object.getOwnPropertyNames(i).forEach((function(s){this.append(s,i[s])}),this)}function consumed(i){if(i.bodyUsed)return Promise.reject(new TypeError("Already read"));i.bodyUsed=!0}function fileReaderReady(i){return new Promise((function(s,u){i.onload=function(){s(i.result)},i.onerror=function(){u(i.error)}}))}function readBlobAsArrayBuffer(i){var s=new FileReader,u=fileReaderReady(s);return s.readAsArrayBuffer(i),u}function bufferClone(i){if(i.slice)return i.slice(0);var s=new Uint8Array(i.byteLength);return s.set(new Uint8Array(i)),s.buffer}function Body(){return this.bodyUsed=!1,this._initBody=function(i){this._bodyInit=i,i?"string"==typeof i?this._bodyText=i:v&&Blob.prototype.isPrototypeOf(i)?this._bodyBlob=i:_&&FormData.prototype.isPrototypeOf(i)?this._bodyFormData=i:u&&URLSearchParams.prototype.isPrototypeOf(i)?this._bodyText=i.toString():j&&v&&function isDataView(i){return i&&DataView.prototype.isPrototypeOf(i)}(i)?(this._bodyArrayBuffer=bufferClone(i.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):j&&(ArrayBuffer.prototype.isPrototypeOf(i)||$(i))?this._bodyArrayBuffer=bufferClone(i):this._bodyText=i=Object.prototype.toString.call(i):this._bodyText="",this.headers.get("content-type")||("string"==typeof i?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):u&&URLSearchParams.prototype.isPrototypeOf(i)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},v&&(this.blob=function(){var i=consumed(this);if(i)return i;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?consumed(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(readBlobAsArrayBuffer)}),this.text=function(){var i=consumed(this);if(i)return i;if(this._bodyBlob)return function readBlobAsText(i){var s=new FileReader,u=fileReaderReady(s);return s.readAsText(i),u}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function readArrayBufferAsText(i){for(var s=new Uint8Array(i),u=new Array(s.length),m=0;m-1?s:i}(s.method||this.method||"GET"),this.mode=s.mode||this.mode||null,this.signal=s.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&u)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(u)}function decode(i){var s=new FormData;return i.trim().split("&").forEach((function(i){if(i){var u=i.split("="),m=u.shift().replace(/\+/g," "),v=u.join("=").replace(/\+/g," ");s.append(decodeURIComponent(m),decodeURIComponent(v))}})),s}function Response(i,s){s||(s={}),this.type="default",this.status=void 0===s.status?200:s.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in s?s.statusText:"OK",this.headers=new Headers(s.headers),this.url=s.url||"",this._initBody(i)}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var i=new Response(null,{status:0,statusText:""});return i.type="error",i};var X=[301,302,303,307,308];Response.redirect=function(i,s){if(-1===X.indexOf(s))throw new RangeError("Invalid status code");return new Response(null,{status:s,headers:{location:i}})},s.DOMException=i.DOMException;try{new s.DOMException}catch(i){s.DOMException=function(i,s){this.message=i,this.name=s;var u=Error(i);this.stack=u.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function fetch(i,u){return new Promise((function(m,_){var j=new Request(i,u);if(j.signal&&j.signal.aborted)return _(new s.DOMException("Aborted","AbortError"));var M=new XMLHttpRequest;function abortXhr(){M.abort()}M.onload=function(){var i,s,u={status:M.status,statusText:M.statusText,headers:(i=M.getAllResponseHeaders()||"",s=new Headers,i.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(i){var u=i.split(":"),m=u.shift().trim();if(m){var v=u.join(":").trim();s.append(m,v)}})),s)};u.url="responseURL"in M?M.responseURL:u.headers.get("X-Request-URL");var v="response"in M?M.response:M.responseText;m(new Response(v,u))},M.onerror=function(){_(new TypeError("Network request failed"))},M.ontimeout=function(){_(new TypeError("Network request failed"))},M.onabort=function(){_(new s.DOMException("Aborted","AbortError"))},M.open(j.method,j.url,!0),"include"===j.credentials?M.withCredentials=!0:"omit"===j.credentials&&(M.withCredentials=!1),"responseType"in M&&v&&(M.responseType="blob"),j.headers.forEach((function(i,s){M.setRequestHeader(s,i)})),j.signal&&(j.signal.addEventListener("abort",abortXhr),M.onreadystatechange=function(){4===M.readyState&&j.signal.removeEventListener("abort",abortXhr)}),M.send(void 0===j._bodyInit?null:j._bodyInit)}))}fetch.polyfill=!0,i.fetch||(i.fetch=fetch,i.Headers=Headers,i.Request=Request,i.Response=Response),s.Headers=Headers,s.Request=Request,s.Response=Response,s.fetch=fetch,Object.defineProperty(s,"__esModule",{value:!0})}({})}("undefined"!=typeof self?self:this)},8269:function(i,s,u){var m;m=void 0!==u.g?u.g:this,i.exports=function(i){if(i.CSS&&i.CSS.escape)return i.CSS.escape;var cssEscape=function(i){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var s,u=String(i),m=u.length,v=-1,_="",j=u.charCodeAt(0);++v=1&&s<=31||127==s||0==v&&s>=48&&s<=57||1==v&&s>=48&&s<=57&&45==j?"\\"+s.toString(16)+" ":0==v&&1==m&&45==s||!(s>=128||45==s||95==s||s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122)?"\\"+u.charAt(v):u.charAt(v):_+="�";return _};return i.CSS||(i.CSS={}),i.CSS.escape=cssEscape,cssEscape}(m)},27698:(i,s,u)=>{"use strict";var m=u(48764).Buffer;function isSpecificValue(i){return i instanceof m||i instanceof Date||i instanceof RegExp}function cloneSpecificValue(i){if(i instanceof m){var s=m.alloc?m.alloc(i.length):new m(i.length);return i.copy(s),s}if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i);throw new Error("Unexpected situation")}function deepCloneArray(i){var s=[];return i.forEach((function(i,u){"object"==typeof i&&null!==i?Array.isArray(i)?s[u]=deepCloneArray(i):isSpecificValue(i)?s[u]=cloneSpecificValue(i):s[u]=v({},i):s[u]=i})),s}function safeGetProperty(i,s){return"__proto__"===s?void 0:i[s]}var v=i.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var i,s,u=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(m){"object"!=typeof m||null===m||Array.isArray(m)||Object.keys(m).forEach((function(_){return s=safeGetProperty(u,_),(i=safeGetProperty(m,_))===u?void 0:"object"!=typeof i||null===i?void(u[_]=i):Array.isArray(i)?void(u[_]=deepCloneArray(i)):isSpecificValue(i)?void(u[_]=cloneSpecificValue(i)):"object"!=typeof s||null===s||Array.isArray(s)?void(u[_]=v({},i)):void(u[_]=v(s,i))}))})),u}},9996:i=>{"use strict";var s=function isMergeableObject(i){return function isNonNullObject(i){return!!i&&"object"==typeof i}(i)&&!function isSpecial(i){var s=Object.prototype.toString.call(i);return"[object RegExp]"===s||"[object Date]"===s||function isReactElement(i){return i.$$typeof===u}(i)}(i)};var u="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(i,s){return!1!==s.clone&&s.isMergeableObject(i)?deepmerge(function emptyTarget(i){return Array.isArray(i)?[]:{}}(i),i,s):i}function defaultArrayMerge(i,s,u){return i.concat(s).map((function(i){return cloneUnlessOtherwiseSpecified(i,u)}))}function getKeys(i){return Object.keys(i).concat(function getEnumerableOwnPropertySymbols(i){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(i).filter((function(s){return Object.propertyIsEnumerable.call(i,s)})):[]}(i))}function propertyIsOnObject(i,s){try{return s in i}catch(i){return!1}}function mergeObject(i,s,u){var m={};return u.isMergeableObject(i)&&getKeys(i).forEach((function(s){m[s]=cloneUnlessOtherwiseSpecified(i[s],u)})),getKeys(s).forEach((function(v){(function propertyIsUnsafe(i,s){return propertyIsOnObject(i,s)&&!(Object.hasOwnProperty.call(i,s)&&Object.propertyIsEnumerable.call(i,s))})(i,v)||(propertyIsOnObject(i,v)&&u.isMergeableObject(s[v])?m[v]=function getMergeFunction(i,s){if(!s.customMerge)return deepmerge;var u=s.customMerge(i);return"function"==typeof u?u:deepmerge}(v,u)(i[v],s[v],u):m[v]=cloneUnlessOtherwiseSpecified(s[v],u))})),m}function deepmerge(i,u,m){(m=m||{}).arrayMerge=m.arrayMerge||defaultArrayMerge,m.isMergeableObject=m.isMergeableObject||s,m.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var v=Array.isArray(u);return v===Array.isArray(i)?v?m.arrayMerge(i,u,m):mergeObject(i,u,m):cloneUnlessOtherwiseSpecified(u,m)}deepmerge.all=function deepmergeAll(i,s){if(!Array.isArray(i))throw new Error("first argument should be an array");return i.reduce((function(i,u){return deepmerge(i,u,s)}),{})};var m=deepmerge;i.exports=m},27856:function(i){i.exports=function(){"use strict";const{entries:i,setPrototypeOf:s,isFrozen:u,getPrototypeOf:m,getOwnPropertyDescriptor:v}=Object;let{freeze:_,seal:j,create:M}=Object,{apply:$,construct:W}="undefined"!=typeof Reflect&&Reflect;$||($=function apply(i,s,u){return i.apply(s,u)}),_||(_=function freeze(i){return i}),j||(j=function seal(i){return i}),W||(W=function construct(i,s){return new i(...s)});const X=unapply(Array.prototype.forEach),Y=unapply(Array.prototype.pop),Z=unapply(Array.prototype.push),ee=unapply(String.prototype.toLowerCase),ie=unapply(String.prototype.toString),ae=unapply(String.prototype.match),ce=unapply(String.prototype.replace),le=unapply(String.prototype.indexOf),pe=unapply(String.prototype.trim),de=unapply(RegExp.prototype.test),fe=unconstruct(TypeError);function unapply(i){return function(s){for(var u=arguments.length,m=new Array(u>1?u-1:0),v=1;v/gm),We=j(/\${[\w\W]*}/gm),He=j(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=j(/^aria-[\-\w]+$/),Ye=j(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=j(/^(?:\w+script|data):/i),et=j(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),tt=j(/^html$/i);var rt=Object.freeze({__proto__:null,MUSTACHE_EXPR:ze,ERB_EXPR:Ve,TMPLIT_EXPR:We,DATA_ATTR:He,ARIA_ATTR:Xe,IS_ALLOWED_URI:Ye,IS_SCRIPT_OR_DATA:Qe,ATTR_WHITESPACE:et,DOCTYPE_NAME:tt});const getGlobal=()=>"undefined"==typeof window?null:window,nt=function _createTrustedTypesPolicy(i,s){if("object"!=typeof i||"function"!=typeof i.createPolicy)return null;let u=null;const m="data-tt-policy-suffix";s&&s.hasAttribute(m)&&(u=s.getAttribute(m));const v="dompurify"+(u?"#"+u:"");try{return i.createPolicy(v,{createHTML:i=>i,createScriptURL:i=>i})}catch(i){return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function createDOMPurify(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:getGlobal();const DOMPurify=i=>createDOMPurify(i);if(DOMPurify.version="3.0.5",DOMPurify.removed=[],!s||!s.document||9!==s.document.nodeType)return DOMPurify.isSupported=!1,DOMPurify;const u=s.document,m=u.currentScript;let{document:v}=s;const{DocumentFragment:j,HTMLTemplateElement:M,Node:$,Element:W,NodeFilter:ze,NamedNodeMap:Ve=s.NamedNodeMap||s.MozNamedAttrMap,HTMLFormElement:We,DOMParser:He,trustedTypes:Xe}=s,Qe=W.prototype,et=lookupGetter(Qe,"cloneNode"),ot=lookupGetter(Qe,"nextSibling"),it=lookupGetter(Qe,"childNodes"),at=lookupGetter(Qe,"parentNode");if("function"==typeof M){const i=v.createElement("template");i.content&&i.content.ownerDocument&&(v=i.content.ownerDocument)}let st,ct="";const{implementation:lt,createNodeIterator:ut,createDocumentFragment:pt,getElementsByTagName:ht}=v,{importNode:dt}=u;let mt={};DOMPurify.isSupported="function"==typeof i&&"function"==typeof at&<&&void 0!==lt.createHTMLDocument;const{MUSTACHE_EXPR:yt,ERB_EXPR:gt,TMPLIT_EXPR:vt,DATA_ATTR:bt,ARIA_ATTR:_t,IS_SCRIPT_OR_DATA:wt,ATTR_WHITESPACE:Et}=rt;let{IS_ALLOWED_URI:St}=rt,xt=null;const Ot=addToSet({},[...ye,...be,..._e,...Se,...Pe]);let kt=null;const At=addToSet({},[...Ie,...Te,...Re,...qe]);let Ct=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),jt=null,Pt=null,It=!0,Nt=!0,Tt=!1,Mt=!0,Rt=!1,Dt=!1,Bt=!1,Lt=!1,Ft=!1,qt=!1,$t=!1,Ut=!0,zt=!1;const Vt="user-content-";let Wt=!0,Kt=!1,Ht={},Jt=null;const Gt=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Xt=null;const Yt=addToSet({},["audio","video","img","source","image","track"]);let Qt=null;const Zt=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),er="http://www.w3.org/1998/Math/MathML",tr="http://www.w3.org/2000/svg",rr="http://www.w3.org/1999/xhtml";let nr=rr,ir=!1,ar=null;const sr=addToSet({},[er,tr,rr],ie);let cr;const lr=["application/xhtml+xml","text/html"],ur="text/html";let pr,dr=null;const fr=v.createElement("form"),mr=function isRegexOrFunction(i){return i instanceof RegExp||i instanceof Function},yr=function _parseConfig(i){if(!dr||dr!==i){if(i&&"object"==typeof i||(i={}),i=clone(i),cr=cr=-1===lr.indexOf(i.PARSER_MEDIA_TYPE)?ur:i.PARSER_MEDIA_TYPE,pr="application/xhtml+xml"===cr?ie:ee,xt="ALLOWED_TAGS"in i?addToSet({},i.ALLOWED_TAGS,pr):Ot,kt="ALLOWED_ATTR"in i?addToSet({},i.ALLOWED_ATTR,pr):At,ar="ALLOWED_NAMESPACES"in i?addToSet({},i.ALLOWED_NAMESPACES,ie):sr,Qt="ADD_URI_SAFE_ATTR"in i?addToSet(clone(Zt),i.ADD_URI_SAFE_ATTR,pr):Zt,Xt="ADD_DATA_URI_TAGS"in i?addToSet(clone(Yt),i.ADD_DATA_URI_TAGS,pr):Yt,Jt="FORBID_CONTENTS"in i?addToSet({},i.FORBID_CONTENTS,pr):Gt,jt="FORBID_TAGS"in i?addToSet({},i.FORBID_TAGS,pr):{},Pt="FORBID_ATTR"in i?addToSet({},i.FORBID_ATTR,pr):{},Ht="USE_PROFILES"in i&&i.USE_PROFILES,It=!1!==i.ALLOW_ARIA_ATTR,Nt=!1!==i.ALLOW_DATA_ATTR,Tt=i.ALLOW_UNKNOWN_PROTOCOLS||!1,Mt=!1!==i.ALLOW_SELF_CLOSE_IN_ATTR,Rt=i.SAFE_FOR_TEMPLATES||!1,Dt=i.WHOLE_DOCUMENT||!1,Ft=i.RETURN_DOM||!1,qt=i.RETURN_DOM_FRAGMENT||!1,$t=i.RETURN_TRUSTED_TYPE||!1,Lt=i.FORCE_BODY||!1,Ut=!1!==i.SANITIZE_DOM,zt=i.SANITIZE_NAMED_PROPS||!1,Wt=!1!==i.KEEP_CONTENT,Kt=i.IN_PLACE||!1,St=i.ALLOWED_URI_REGEXP||Ye,nr=i.NAMESPACE||rr,Ct=i.CUSTOM_ELEMENT_HANDLING||{},i.CUSTOM_ELEMENT_HANDLING&&mr(i.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ct.tagNameCheck=i.CUSTOM_ELEMENT_HANDLING.tagNameCheck),i.CUSTOM_ELEMENT_HANDLING&&mr(i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ct.attributeNameCheck=i.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),i.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Ct.allowCustomizedBuiltInElements=i.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Rt&&(Nt=!1),qt&&(Ft=!0),Ht&&(xt=addToSet({},[...Pe]),kt=[],!0===Ht.html&&(addToSet(xt,ye),addToSet(kt,Ie)),!0===Ht.svg&&(addToSet(xt,be),addToSet(kt,Te),addToSet(kt,qe)),!0===Ht.svgFilters&&(addToSet(xt,_e),addToSet(kt,Te),addToSet(kt,qe)),!0===Ht.mathMl&&(addToSet(xt,Se),addToSet(kt,Re),addToSet(kt,qe))),i.ADD_TAGS&&(xt===Ot&&(xt=clone(xt)),addToSet(xt,i.ADD_TAGS,pr)),i.ADD_ATTR&&(kt===At&&(kt=clone(kt)),addToSet(kt,i.ADD_ATTR,pr)),i.ADD_URI_SAFE_ATTR&&addToSet(Qt,i.ADD_URI_SAFE_ATTR,pr),i.FORBID_CONTENTS&&(Jt===Gt&&(Jt=clone(Jt)),addToSet(Jt,i.FORBID_CONTENTS,pr)),Wt&&(xt["#text"]=!0),Dt&&addToSet(xt,["html","head","body"]),xt.table&&(addToSet(xt,["tbody"]),delete jt.tbody),i.TRUSTED_TYPES_POLICY){if("function"!=typeof i.TRUSTED_TYPES_POLICY.createHTML)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof i.TRUSTED_TYPES_POLICY.createScriptURL)throw fe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=i.TRUSTED_TYPES_POLICY,ct=st.createHTML("")}else void 0===st&&(st=nt(Xe,m)),null!==st&&"string"==typeof ct&&(ct=st.createHTML(""));_&&_(i),dr=i}},gr=addToSet({},["mi","mo","mn","ms","mtext"]),vr=addToSet({},["foreignobject","desc","title","annotation-xml"]),br=addToSet({},["title","style","font","a","script"]),_r=addToSet({},be);addToSet(_r,_e),addToSet(_r,we);const wr=addToSet({},Se);addToSet(wr,xe);const Er=function _checkValidNamespace(i){let s=at(i);s&&s.tagName||(s={namespaceURI:nr,tagName:"template"});const u=ee(i.tagName),m=ee(s.tagName);return!!ar[i.namespaceURI]&&(i.namespaceURI===tr?s.namespaceURI===rr?"svg"===u:s.namespaceURI===er?"svg"===u&&("annotation-xml"===m||gr[m]):Boolean(_r[u]):i.namespaceURI===er?s.namespaceURI===rr?"math"===u:s.namespaceURI===tr?"math"===u&&vr[m]:Boolean(wr[u]):i.namespaceURI===rr?!(s.namespaceURI===tr&&!vr[m])&&!(s.namespaceURI===er&&!gr[m])&&!wr[u]&&(br[u]||!_r[u]):!("application/xhtml+xml"!==cr||!ar[i.namespaceURI]))},Sr=function _forceRemove(i){Z(DOMPurify.removed,{element:i});try{i.parentNode.removeChild(i)}catch(s){i.remove()}},xr=function _removeAttribute(i,s){try{Z(DOMPurify.removed,{attribute:s.getAttributeNode(i),from:s})}catch(i){Z(DOMPurify.removed,{attribute:null,from:s})}if(s.removeAttribute(i),"is"===i&&!kt[i])if(Ft||qt)try{Sr(s)}catch(i){}else try{s.setAttribute(i,"")}catch(i){}},Or=function _initDocument(i){let s,u;if(Lt)i=" "+i;else{const s=ae(i,/^[\r\n\t ]+/);u=s&&s[0]}"application/xhtml+xml"===cr&&nr===rr&&(i=''+i+"");const m=st?st.createHTML(i):i;if(nr===rr)try{s=(new He).parseFromString(m,cr)}catch(i){}if(!s||!s.documentElement){s=lt.createDocument(nr,"template",null);try{s.documentElement.innerHTML=ir?ct:m}catch(i){}}const _=s.body||s.documentElement;return i&&u&&_.insertBefore(v.createTextNode(u),_.childNodes[0]||null),nr===rr?ht.call(s,Dt?"html":"body")[0]:Dt?s.documentElement:_},kr=function _createIterator(i){return ut.call(i.ownerDocument||i,i,ze.SHOW_ELEMENT|ze.SHOW_COMMENT|ze.SHOW_TEXT,null,!1)},Ar=function _isClobbered(i){return i instanceof We&&("string"!=typeof i.nodeName||"string"!=typeof i.textContent||"function"!=typeof i.removeChild||!(i.attributes instanceof Ve)||"function"!=typeof i.removeAttribute||"function"!=typeof i.setAttribute||"string"!=typeof i.namespaceURI||"function"!=typeof i.insertBefore||"function"!=typeof i.hasChildNodes)},Cr=function _isNode(i){return"object"==typeof $?i instanceof $:i&&"object"==typeof i&&"number"==typeof i.nodeType&&"string"==typeof i.nodeName},jr=function _executeHook(i,s,u){mt[i]&&X(mt[i],(i=>{i.call(DOMPurify,s,u,dr)}))},Pr=function _sanitizeElements(i){let s;if(jr("beforeSanitizeElements",i,null),Ar(i))return Sr(i),!0;const u=pr(i.nodeName);if(jr("uponSanitizeElement",i,{tagName:u,allowedTags:xt}),i.hasChildNodes()&&!Cr(i.firstElementChild)&&(!Cr(i.content)||!Cr(i.content.firstElementChild))&&de(/<[/\w]/g,i.innerHTML)&&de(/<[/\w]/g,i.textContent))return Sr(i),!0;if(!xt[u]||jt[u]){if(!jt[u]&&Nr(u)){if(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,u))return!1;if(Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(u))return!1}if(Wt&&!Jt[u]){const s=at(i)||i.parentNode,u=it(i)||i.childNodes;if(u&&s)for(let m=u.length-1;m>=0;--m)s.insertBefore(et(u[m],!0),ot(i))}return Sr(i),!0}return i instanceof W&&!Er(i)?(Sr(i),!0):"noscript"!==u&&"noembed"!==u&&"noframes"!==u||!de(/<\/no(script|embed|frames)/i,i.innerHTML)?(Rt&&3===i.nodeType&&(s=i.textContent,s=ce(s,yt," "),s=ce(s,gt," "),s=ce(s,vt," "),i.textContent!==s&&(Z(DOMPurify.removed,{element:i.cloneNode()}),i.textContent=s)),jr("afterSanitizeElements",i,null),!1):(Sr(i),!0)},Ir=function _isValidAttribute(i,s,u){if(Ut&&("id"===s||"name"===s)&&(u in v||u in fr))return!1;if(Nt&&!Pt[s]&&de(bt,s));else if(It&&de(_t,s));else if(!kt[s]||Pt[s]){if(!(Nr(i)&&(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,i)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(i))&&(Ct.attributeNameCheck instanceof RegExp&&de(Ct.attributeNameCheck,s)||Ct.attributeNameCheck instanceof Function&&Ct.attributeNameCheck(s))||"is"===s&&Ct.allowCustomizedBuiltInElements&&(Ct.tagNameCheck instanceof RegExp&&de(Ct.tagNameCheck,u)||Ct.tagNameCheck instanceof Function&&Ct.tagNameCheck(u))))return!1}else if(Qt[s]);else if(de(St,ce(u,Et,"")));else if("src"!==s&&"xlink:href"!==s&&"href"!==s||"script"===i||0!==le(u,"data:")||!Xt[i])if(Tt&&!de(wt,ce(u,Et,"")));else if(u)return!1;return!0},Nr=function _basicCustomElementTest(i){return i.indexOf("-")>0},Tr=function _sanitizeAttributes(i){let s,u,m,v;jr("beforeSanitizeAttributes",i,null);const{attributes:_}=i;if(!_)return;const j={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:kt};for(v=_.length;v--;){s=_[v];const{name:M,namespaceURI:$}=s;if(u="value"===M?s.value:pe(s.value),m=pr(M),j.attrName=m,j.attrValue=u,j.keepAttr=!0,j.forceKeepAttr=void 0,jr("uponSanitizeAttribute",i,j),u=j.attrValue,j.forceKeepAttr)continue;if(xr(M,i),!j.keepAttr)continue;if(!Mt&&de(/\/>/i,u)){xr(M,i);continue}Rt&&(u=ce(u,yt," "),u=ce(u,gt," "),u=ce(u,vt," "));const W=pr(i.nodeName);if(Ir(W,m,u)){if(!zt||"id"!==m&&"name"!==m||(xr(M,i),u=Vt+u),st&&"object"==typeof Xe&&"function"==typeof Xe.getAttributeType)if($);else switch(Xe.getAttributeType(W,m)){case"TrustedHTML":u=st.createHTML(u);break;case"TrustedScriptURL":u=st.createScriptURL(u)}try{$?i.setAttributeNS($,M,u):i.setAttribute(M,u),Y(DOMPurify.removed)}catch(i){}}}jr("afterSanitizeAttributes",i,null)},Mr=function _sanitizeShadowDOM(i){let s;const u=kr(i);for(jr("beforeSanitizeShadowDOM",i,null);s=u.nextNode();)jr("uponSanitizeShadowNode",s,null),Pr(s)||(s.content instanceof j&&_sanitizeShadowDOM(s.content),Tr(s));jr("afterSanitizeShadowDOM",i,null)};return DOMPurify.sanitize=function(i){let s,m,v,_,M=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ir=!i,ir&&(i="\x3c!--\x3e"),"string"!=typeof i&&!Cr(i)){if("function"!=typeof i.toString)throw fe("toString is not a function");if("string"!=typeof(i=i.toString()))throw fe("dirty is not a string, aborting")}if(!DOMPurify.isSupported)return i;if(Bt||yr(M),DOMPurify.removed=[],"string"==typeof i&&(Kt=!1),Kt){if(i.nodeName){const s=pr(i.nodeName);if(!xt[s]||jt[s])throw fe("root node is forbidden and cannot be sanitized in-place")}}else if(i instanceof $)s=Or("\x3c!----\x3e"),m=s.ownerDocument.importNode(i,!0),1===m.nodeType&&"BODY"===m.nodeName||"HTML"===m.nodeName?s=m:s.appendChild(m);else{if(!Ft&&!Rt&&!Dt&&-1===i.indexOf("<"))return st&&$t?st.createHTML(i):i;if(s=Or(i),!s)return Ft?null:$t?ct:""}s&&Lt&&Sr(s.firstChild);const W=kr(Kt?i:s);for(;v=W.nextNode();)Pr(v)||(v.content instanceof j&&Mr(v.content),Tr(v));if(Kt)return i;if(Ft){if(qt)for(_=pt.call(s.ownerDocument);s.firstChild;)_.appendChild(s.firstChild);else _=s;return(kt.shadowroot||kt.shadowrootmode)&&(_=dt.call(u,_,!0)),_}let X=Dt?s.outerHTML:s.innerHTML;return Dt&&xt["!doctype"]&&s.ownerDocument&&s.ownerDocument.doctype&&s.ownerDocument.doctype.name&&de(tt,s.ownerDocument.doctype.name)&&(X="\n"+X),Rt&&(X=ce(X,yt," "),X=ce(X,gt," "),X=ce(X,vt," ")),st&&$t?st.createHTML(X):X},DOMPurify.setConfig=function(i){yr(i),Bt=!0},DOMPurify.clearConfig=function(){dr=null,Bt=!1},DOMPurify.isValidAttribute=function(i,s,u){dr||yr({});const m=pr(i),v=pr(s);return Ir(m,v,u)},DOMPurify.addHook=function(i,s){"function"==typeof s&&(mt[i]=mt[i]||[],Z(mt[i],s))},DOMPurify.removeHook=function(i){if(mt[i])return Y(mt[i])},DOMPurify.removeHooks=function(i){mt[i]&&(mt[i]=[])},DOMPurify.removeAllHooks=function(){mt={}},DOMPurify}return createDOMPurify()}()},69450:i=>{"use strict";class SubRange{constructor(i,s){this.low=i,this.high=s,this.length=1+s-i}overlaps(i){return!(this.highi.high)}touches(i){return!(this.high+1i.high)}add(i){return new SubRange(Math.min(this.low,i.low),Math.max(this.high,i.high))}subtract(i){return i.low<=this.low&&i.high>=this.high?[]:i.low>this.low&&i.highi+s.length),0)}add(i,s){var _add=i=>{for(var s=0;s{for(var s=0;s{for(var s=0;s{for(var u=s.low;u<=s.high;)i.push(u),u++;return i}),[])}subranges(){return this.ranges.map((i=>({low:i.low,high:i.high,length:1+i.high-i.low})))}}i.exports=DRange},17187:i=>{"use strict";var s,u="object"==typeof Reflect?Reflect:null,m=u&&"function"==typeof u.apply?u.apply:function ReflectApply(i,s,u){return Function.prototype.apply.call(i,s,u)};s=u&&"function"==typeof u.ownKeys?u.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i).concat(Object.getOwnPropertySymbols(i))}:function ReflectOwnKeys(i){return Object.getOwnPropertyNames(i)};var v=Number.isNaN||function NumberIsNaN(i){return i!=i};function EventEmitter(){EventEmitter.init.call(this)}i.exports=EventEmitter,i.exports.once=function once(i,s){return new Promise((function(u,m){function errorListener(u){i.removeListener(s,resolver),m(u)}function resolver(){"function"==typeof i.removeListener&&i.removeListener("error",errorListener),u([].slice.call(arguments))}eventTargetAgnosticAddListener(i,s,resolver,{once:!0}),"error"!==s&&function addErrorHandlerIfEventEmitter(i,s,u){"function"==typeof i.on&&eventTargetAgnosticAddListener(i,"error",s,u)}(i,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(i){if("function"!=typeof i)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof i)}function _getMaxListeners(i){return void 0===i._maxListeners?EventEmitter.defaultMaxListeners:i._maxListeners}function _addListener(i,s,u,m){var v,_,j;if(checkListener(u),void 0===(_=i._events)?(_=i._events=Object.create(null),i._eventsCount=0):(void 0!==_.newListener&&(i.emit("newListener",s,u.listener?u.listener:u),_=i._events),j=_[s]),void 0===j)j=_[s]=u,++i._eventsCount;else if("function"==typeof j?j=_[s]=m?[u,j]:[j,u]:m?j.unshift(u):j.push(u),(v=_getMaxListeners(i))>0&&j.length>v&&!j.warned){j.warned=!0;var M=new Error("Possible EventEmitter memory leak detected. "+j.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");M.name="MaxListenersExceededWarning",M.emitter=i,M.type=s,M.count=j.length,function ProcessEmitWarning(i){console&&console.warn&&console.warn(i)}(M)}return i}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(i,s,u){var m={fired:!1,wrapFn:void 0,target:i,type:s,listener:u},v=onceWrapper.bind(m);return v.listener=u,m.wrapFn=v,v}function _listeners(i,s,u){var m=i._events;if(void 0===m)return[];var v=m[s];return void 0===v?[]:"function"==typeof v?u?[v.listener||v]:[v]:u?function unwrapListeners(i){for(var s=new Array(i.length),u=0;u0&&(j=s[0]),j instanceof Error)throw j;var M=new Error("Unhandled error."+(j?" ("+j.message+")":""));throw M.context=j,M}var $=_[i];if(void 0===$)return!1;if("function"==typeof $)m($,this,s);else{var W=$.length,X=arrayClone($,W);for(u=0;u=0;_--)if(u[_]===s||u[_].listener===s){j=u[_].listener,v=_;break}if(v<0)return this;0===v?u.shift():function spliceOne(i,s){for(;s+1=0;m--)this.removeListener(i,s[m]);return this},EventEmitter.prototype.listeners=function listeners(i){return _listeners(this,i,!0)},EventEmitter.prototype.rawListeners=function rawListeners(i){return _listeners(this,i,!1)},EventEmitter.listenerCount=function(i,s){return"function"==typeof i.listenerCount?i.listenerCount(s):listenerCount.call(i,s)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?s(this._events):[]}},21102:(i,s,u)=>{"use strict";var m=u(46291),v=create(Error);function create(i){return FormattedError.displayName=i.displayName||i.name,FormattedError;function FormattedError(s){return s&&(s=m.apply(null,arguments)),new i(s)}}i.exports=v,v.eval=create(EvalError),v.range=create(RangeError),v.reference=create(ReferenceError),v.syntax=create(SyntaxError),v.type=create(TypeError),v.uri=create(URIError),v.create=create},46291:i=>{!function(){var s;function format(i){for(var s,u,m,v,_=1,j=[].slice.call(arguments),M=0,$=i.length,W="",X=!1,Y=!1,nextArg=function(){return j[_++]},slurpNumber=function(){for(var u="";/\d/.test(i[M]);)u+=i[M++],s=i[M];return u.length>0?parseInt(u):null};M<$;++M)if(s=i[M],X)switch(X=!1,"."==s?(Y=!1,s=i[++M]):"0"==s&&"."==i[M+1]?(Y=!0,s=i[M+=2]):Y=!0,v=slurpNumber(),s){case"b":W+=parseInt(nextArg(),10).toString(2);break;case"c":W+="string"==typeof(u=nextArg())||u instanceof String?u:String.fromCharCode(parseInt(u,10));break;case"d":W+=parseInt(nextArg(),10);break;case"f":m=String(parseFloat(nextArg()).toFixed(v||6)),W+=Y?m:m.replace(/^0/,"");break;case"j":W+=JSON.stringify(nextArg());break;case"o":W+="0"+parseInt(nextArg(),10).toString(8);break;case"s":W+=nextArg();break;case"x":W+="0x"+parseInt(nextArg(),10).toString(16);break;case"X":W+="0x"+parseInt(nextArg(),10).toString(16).toUpperCase();break;default:W+=s}else"%"===s?X=!0:W+=s;return W}(s=i.exports=format).format=format,s.vsprintf=function vsprintf(i,s){return format.apply(null,[i].concat(s))},"undefined"!=typeof console&&"function"==typeof console.log&&(s.printf=function printf(){console.log(format.apply(null,arguments))})}()},17648:i=>{"use strict";var s=Array.prototype.slice,u=Object.prototype.toString;i.exports=function bind(i){var m=this;if("function"!=typeof m||"[object Function]"!==u.call(m))throw new TypeError("Function.prototype.bind called on incompatible "+m);for(var v,_=s.call(arguments,1),j=Math.max(0,m.length-_.length),M=[],$=0;${"use strict";var m=u(17648);i.exports=Function.prototype.bind||m},40210:(i,s,u)=>{"use strict";var m,v=SyntaxError,_=Function,j=TypeError,getEvalledConstructor=function(i){try{return _('"use strict"; return ('+i+").constructor;")()}catch(i){}},M=Object.getOwnPropertyDescriptor;if(M)try{M({},"")}catch(i){M=null}var throwTypeError=function(){throw new j},$=M?function(){try{return throwTypeError}catch(i){try{return M(arguments,"callee").get}catch(i){return throwTypeError}}}():throwTypeError,W=u(41405)(),X=u(28185)(),Y=Object.getPrototypeOf||(X?function(i){return i.__proto__}:null),Z={},ee="undefined"!=typeof Uint8Array&&Y?Y(Uint8Array):m,ie={"%AggregateError%":"undefined"==typeof AggregateError?m:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?m:ArrayBuffer,"%ArrayIteratorPrototype%":W&&Y?Y([][Symbol.iterator]()):m,"%AsyncFromSyncIteratorPrototype%":m,"%AsyncFunction%":Z,"%AsyncGenerator%":Z,"%AsyncGeneratorFunction%":Z,"%AsyncIteratorPrototype%":Z,"%Atomics%":"undefined"==typeof Atomics?m:Atomics,"%BigInt%":"undefined"==typeof BigInt?m:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?m:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?m:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?m:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?m:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?m:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?m:FinalizationRegistry,"%Function%":_,"%GeneratorFunction%":Z,"%Int8Array%":"undefined"==typeof Int8Array?m:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?m:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?m:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":W&&Y?Y(Y([][Symbol.iterator]())):m,"%JSON%":"object"==typeof JSON?JSON:m,"%Map%":"undefined"==typeof Map?m:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&W&&Y?Y((new Map)[Symbol.iterator]()):m,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?m:Promise,"%Proxy%":"undefined"==typeof Proxy?m:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?m:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?m:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&W&&Y?Y((new Set)[Symbol.iterator]()):m,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?m:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":W&&Y?Y(""[Symbol.iterator]()):m,"%Symbol%":W?Symbol:m,"%SyntaxError%":v,"%ThrowTypeError%":$,"%TypedArray%":ee,"%TypeError%":j,"%Uint8Array%":"undefined"==typeof Uint8Array?m:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?m:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?m:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?m:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?m:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?m:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?m:WeakSet};if(Y)try{null.error}catch(i){var ae=Y(Y(i));ie["%Error.prototype%"]=ae}var ce=function doEval(i){var s;if("%AsyncFunction%"===i)s=getEvalledConstructor("async function () {}");else if("%GeneratorFunction%"===i)s=getEvalledConstructor("function* () {}");else if("%AsyncGeneratorFunction%"===i)s=getEvalledConstructor("async function* () {}");else if("%AsyncGenerator%"===i){var u=doEval("%AsyncGeneratorFunction%");u&&(s=u.prototype)}else if("%AsyncIteratorPrototype%"===i){var m=doEval("%AsyncGenerator%");m&&Y&&(s=Y(m.prototype))}return ie[i]=s,s},le={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},pe=u(58612),de=u(17642),fe=pe.call(Function.call,Array.prototype.concat),ye=pe.call(Function.apply,Array.prototype.splice),be=pe.call(Function.call,String.prototype.replace),_e=pe.call(Function.call,String.prototype.slice),we=pe.call(Function.call,RegExp.prototype.exec),Se=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,xe=/\\(\\)?/g,Pe=function getBaseIntrinsic(i,s){var u,m=i;if(de(le,m)&&(m="%"+(u=le[m])[0]+"%"),de(ie,m)){var _=ie[m];if(_===Z&&(_=ce(m)),void 0===_&&!s)throw new j("intrinsic "+i+" exists, but is not available. Please file an issue!");return{alias:u,name:m,value:_}}throw new v("intrinsic "+i+" does not exist!")};i.exports=function GetIntrinsic(i,s){if("string"!=typeof i||0===i.length)throw new j("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof s)throw new j('"allowMissing" argument must be a boolean');if(null===we(/^%?[^%]*%?$/,i))throw new v("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var u=function stringToPath(i){var s=_e(i,0,1),u=_e(i,-1);if("%"===s&&"%"!==u)throw new v("invalid intrinsic syntax, expected closing `%`");if("%"===u&&"%"!==s)throw new v("invalid intrinsic syntax, expected opening `%`");var m=[];return be(i,Se,(function(i,s,u,v){m[m.length]=u?be(v,xe,"$1"):s||i})),m}(i),m=u.length>0?u[0]:"",_=Pe("%"+m+"%",s),$=_.name,W=_.value,X=!1,Y=_.alias;Y&&(m=Y[0],ye(u,fe([0,1],Y)));for(var Z=1,ee=!0;Z=u.length){var pe=M(W,ae);W=(ee=!!pe)&&"get"in pe&&!("originalValue"in pe.get)?pe.get:W[ae]}else ee=de(W,ae),W=W[ae];ee&&!X&&(ie[$]=W)}}return W}},28185:i=>{"use strict";var s={foo:{}},u=Object;i.exports=function hasProto(){return{__proto__:s}.foo===s.foo&&!({__proto__:null}instanceof u)}},41405:(i,s,u)=>{"use strict";var m="undefined"!=typeof Symbol&&Symbol,v=u(55419);i.exports=function hasNativeSymbols(){return"function"==typeof m&&("function"==typeof Symbol&&("symbol"==typeof m("foo")&&("symbol"==typeof Symbol("bar")&&v())))}},55419:i=>{"use strict";i.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var i={},s=Symbol("test"),u=Object(s);if("string"==typeof s)return!1;if("[object Symbol]"!==Object.prototype.toString.call(s))return!1;if("[object Symbol]"!==Object.prototype.toString.call(u))return!1;for(s in i[s]=42,i)return!1;if("function"==typeof Object.keys&&0!==Object.keys(i).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(i).length)return!1;var m=Object.getOwnPropertySymbols(i);if(1!==m.length||m[0]!==s)return!1;if(!Object.prototype.propertyIsEnumerable.call(i,s))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var v=Object.getOwnPropertyDescriptor(i,s);if(42!==v.value||!0!==v.enumerable)return!1}return!0}},17642:(i,s,u)=>{"use strict";var m=u(58612);i.exports=m.call(Function.call,Object.prototype.hasOwnProperty)},47802:i=>{function deepFreeze(i){return i instanceof Map?i.clear=i.delete=i.set=function(){throw new Error("map is read-only")}:i instanceof Set&&(i.add=i.clear=i.delete=function(){throw new Error("set is read-only")}),Object.freeze(i),Object.getOwnPropertyNames(i).forEach((function(s){var u=i[s];"object"!=typeof u||Object.isFrozen(u)||deepFreeze(u)})),i}var s=deepFreeze,u=deepFreeze;s.default=u;class Response{constructor(i){void 0===i.data&&(i.data={}),this.data=i.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(i){return i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function inherit(i,...s){const u=Object.create(null);for(const s in i)u[s]=i[s];return s.forEach((function(i){for(const s in i)u[s]=i[s]})),u}const emitsWrappingTags=i=>!!i.kind;class HTMLRenderer{constructor(i,s){this.buffer="",this.classPrefix=s.classPrefix,i.walk(this)}addText(i){this.buffer+=escapeHTML(i)}openNode(i){if(!emitsWrappingTags(i))return;let s=i.kind;i.sublanguage||(s=`${this.classPrefix}${s}`),this.span(s)}closeNode(i){emitsWrappingTags(i)&&(this.buffer+="")}value(){return this.buffer}span(i){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(i){this.top.children.push(i)}openNode(i){const s={kind:i,children:[]};this.add(s),this.stack.push(s)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(i){return this.constructor._walk(i,this.rootNode)}static _walk(i,s){return"string"==typeof s?i.addText(s):s.children&&(i.openNode(s),s.children.forEach((s=>this._walk(i,s))),i.closeNode(s)),i}static _collapse(i){"string"!=typeof i&&i.children&&(i.children.every((i=>"string"==typeof i))?i.children=[i.children.join("")]:i.children.forEach((i=>{TokenTree._collapse(i)})))}}class TokenTreeEmitter extends TokenTree{constructor(i){super(),this.options=i}addKeyword(i,s){""!==i&&(this.openNode(s),this.addText(i),this.closeNode())}addText(i){""!==i&&this.add(i)}addSublanguage(i,s){const u=i.root;u.kind=s,u.sublanguage=!0,this.add(u)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(i){return i?"string"==typeof i?i:i.source:null}const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const v="[a-zA-Z]\\w*",_="[a-zA-Z_]\\w*",j="\\b\\d+(\\.\\d+)?",M="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",$="\\b(0b[01]+)",W={begin:"\\\\[\\s\\S]",relevance:0},X={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[W]},Y={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[W]},Z={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(i,s,u={}){const m=inherit({className:"comment",begin:i,end:s,contains:[]},u);return m.contains.push(Z),m.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),m},ee=COMMENT("//","$"),ie=COMMENT("/\\*","\\*/"),ae=COMMENT("#","$"),ce={className:"number",begin:j,relevance:0},le={className:"number",begin:M,relevance:0},pe={className:"number",begin:$,relevance:0},de={className:"number",begin:j+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},fe={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[W,{begin:/\[/,end:/\]/,relevance:0,contains:[W]}]}]},ye={className:"title",begin:v,relevance:0},be={className:"title",begin:_,relevance:0},_e={begin:"\\.\\s*"+_,relevance:0};var we=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:v,UNDERSCORE_IDENT_RE:_,NUMBER_RE:j,C_NUMBER_RE:M,BINARY_NUMBER_RE:$,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(i={})=>{const s=/^#![ ]*\//;return i.binary&&(i.begin=function concat(...i){return i.map((i=>source(i))).join("")}(s,/.*\b/,i.binary,/\b.*/)),inherit({className:"meta",begin:s,end:/$/,relevance:0,"on:begin":(i,s)=>{0!==i.index&&s.ignoreMatch()}},i)},BACKSLASH_ESCAPE:W,APOS_STRING_MODE:X,QUOTE_STRING_MODE:Y,PHRASAL_WORDS_MODE:Z,COMMENT,C_LINE_COMMENT_MODE:ee,C_BLOCK_COMMENT_MODE:ie,HASH_COMMENT_MODE:ae,NUMBER_MODE:ce,C_NUMBER_MODE:le,BINARY_NUMBER_MODE:pe,CSS_NUMBER_MODE:de,REGEXP_MODE:fe,TITLE_MODE:ye,UNDERSCORE_TITLE_MODE:be,METHOD_GUARD:_e,END_SAME_AS_BEGIN:function(i){return Object.assign(i,{"on:begin":(i,s)=>{s.data._beginMatch=i[1]},"on:end":(i,s)=>{s.data._beginMatch!==i[1]&&s.ignoreMatch()}})}});function skipIfhasPrecedingDot(i,s){"."===i.input[i.index-1]&&s.ignoreMatch()}function beginKeywords(i,s){s&&i.beginKeywords&&(i.begin="\\b("+i.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",i.__beforeBegin=skipIfhasPrecedingDot,i.keywords=i.keywords||i.beginKeywords,delete i.beginKeywords,void 0===i.relevance&&(i.relevance=0))}function compileIllegal(i,s){Array.isArray(i.illegal)&&(i.illegal=function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}(...i.illegal))}function compileMatch(i,s){if(i.match){if(i.begin||i.end)throw new Error("begin & end are not supported with match");i.begin=i.match,delete i.match}}function compileRelevance(i,s){void 0===i.relevance&&(i.relevance=1)}const Se=["of","and","for","in","not","or","if","then","parent","list","value"],xe="keyword";function compileKeywords(i,s,u=xe){const m={};return"string"==typeof i?compileList(u,i.split(" ")):Array.isArray(i)?compileList(u,i):Object.keys(i).forEach((function(u){Object.assign(m,compileKeywords(i[u],s,u))})),m;function compileList(i,u){s&&(u=u.map((i=>i.toLowerCase()))),u.forEach((function(s){const u=s.split("|");m[u[0]]=[i,scoreForKeyword(u[0],u[1])]}))}}function scoreForKeyword(i,s){return s?Number(s):function commonKeyword(i){return Se.includes(i.toLowerCase())}(i)?0:1}function compileLanguage(i,{plugins:s}){function langRe(s,u){return new RegExp(source(s),"m"+(i.case_insensitive?"i":"")+(u?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,s){s.position=this.position++,this.matchIndexes[this.matchAt]=s,this.regexes.push([s,i]),this.matchAt+=function countMatchGroups(i){return new RegExp(i.toString()+"|").exec("").length-1}(i)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const i=this.regexes.map((i=>i[1]));this.matcherRe=langRe(function join(i,s="|"){let u=0;return i.map((i=>{u+=1;const s=u;let v=source(i),_="";for(;v.length>0;){const i=m.exec(v);if(!i){_+=v;break}_+=v.substring(0,i.index),v=v.substring(i.index+i[0].length),"\\"===i[0][0]&&i[1]?_+="\\"+String(Number(i[1])+s):(_+=i[0],"("===i[0]&&u++)}return _})).map((i=>`(${i})`)).join(s)}(i),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;const s=this.matcherRe.exec(i);if(!s)return null;const u=s.findIndex(((i,s)=>s>0&&void 0!==i)),m=this.matchIndexes[u];return s.splice(0,u),Object.assign(s,m)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return this.multiRegexes[i];const s=new MultiRegex;return this.rules.slice(i).forEach((([i,u])=>s.addRule(i,u))),s.compile(),this.multiRegexes[i]=s,s}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(i,s){this.rules.push([i,s]),"begin"===s.type&&this.count++}exec(i){const s=this.getMatcher(this.regexIndex);s.lastIndex=this.lastIndex;let u=s.exec(i);if(this.resumingScanAtSamePosition())if(u&&u.index===this.lastIndex);else{const s=this.getMatcher(0);s.lastIndex=this.lastIndex+1,u=s.exec(i)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}if(i.compilerExtensions||(i.compilerExtensions=[]),i.contains&&i.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return i.classNameAliases=inherit(i.classNameAliases||{}),function compileMode(s,u){const m=s;if(s.isCompiled)return m;[compileMatch].forEach((i=>i(s,u))),i.compilerExtensions.forEach((i=>i(s,u))),s.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((i=>i(s,u))),s.isCompiled=!0;let v=null;if("object"==typeof s.keywords&&(v=s.keywords.$pattern,delete s.keywords.$pattern),s.keywords&&(s.keywords=compileKeywords(s.keywords,i.case_insensitive)),s.lexemes&&v)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return v=v||s.lexemes||/\w+/,m.keywordPatternRe=langRe(v,!0),u&&(s.begin||(s.begin=/\B|\b/),m.beginRe=langRe(s.begin),s.endSameAsBegin&&(s.end=s.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),s.end&&(m.endRe=langRe(s.end)),m.terminatorEnd=source(s.end)||"",s.endsWithParent&&u.terminatorEnd&&(m.terminatorEnd+=(s.end?"|":"")+u.terminatorEnd)),s.illegal&&(m.illegalRe=langRe(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((function(i){return function expandOrCloneMode(i){i.variants&&!i.cachedVariants&&(i.cachedVariants=i.variants.map((function(s){return inherit(i,{variants:null},s)})));if(i.cachedVariants)return i.cachedVariants;if(dependencyOnParent(i))return inherit(i,{starts:i.starts?inherit(i.starts):null});if(Object.isFrozen(i))return inherit(i);return i}("self"===i?s:i)}))),s.contains.forEach((function(i){compileMode(i,m)})),s.starts&&compileMode(s.starts,u),m.matcher=function buildModeRegex(i){const s=new ResumableMultiRegex;return i.contains.forEach((i=>s.addRule(i.begin,{rule:i,type:"begin"}))),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}(m),m}(i)}function dependencyOnParent(i){return!!i&&(i.endsWithParent||dependencyOnParent(i.starts))}function BuildVuePlugin(i){const s={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!i.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let s={};return this.autoDetect?(s=i.highlightAuto(this.code),this.detectedLanguage=s.language):(s=i.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),s.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(i){return Boolean(i||""===i)}(this.autodetect)},ignoreIllegals:()=>!0},render(i){return i("pre",{},[i("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:s,VuePlugin:{install(i){i.component("highlightjs",s)}}}}const Pe={"after:highlightElement":({el:i,result:s,text:u})=>{const m=nodeStream(i);if(!m.length)return;const v=document.createElement("div");v.innerHTML=s.value,s.value=function mergeStreams(i,s,u){let m=0,v="";const _=[];function selectStream(){return i.length&&s.length?i[0].offset!==s[0].offset?i[0].offset"}function close(i){v+=""+tag(i)+">"}function render(i){("start"===i.event?open:close)(i.node)}for(;i.length||s.length;){let s=selectStream();if(v+=escapeHTML(u.substring(m,s[0].offset)),m=s[0].offset,s===i){_.reverse().forEach(close);do{render(s.splice(0,1)[0]),s=selectStream()}while(s===i&&s.length&&s[0].offset===m);_.reverse().forEach(open)}else"start"===s[0].event?_.push(s[0].node):_.pop(),render(s.splice(0,1)[0])}return v+escapeHTML(u.substr(m))}(m,nodeStream(v),u)}};function tag(i){return i.nodeName.toLowerCase()}function nodeStream(i){const s=[];return function _nodeStream(i,u){for(let m=i.firstChild;m;m=m.nextSibling)3===m.nodeType?u+=m.nodeValue.length:1===m.nodeType&&(s.push({event:"start",offset:u,node:m}),u=_nodeStream(m,u),tag(m).match(/br|hr|img|input/)||s.push({event:"stop",offset:u,node:m}));return u}(i,0),s}const Ie={},error=i=>{console.error(i)},warn=(i,...s)=>{console.log(`WARN: ${i}`,...s)},deprecated=(i,s)=>{Ie[`${i}/${s}`]||(console.log(`Deprecated as of ${i}. ${s}`),Ie[`${i}/${s}`]=!0)},Te=escapeHTML,Re=inherit,qe=Symbol("nomatch");var ze=function(i){const u=Object.create(null),m=Object.create(null),v=[];let _=!0;const j=/(^(<[^>]+>|\t|)+|\n)/gm,M="Could not find the language '{}', did you forget to load/include a language module?",$={disableAutodetect:!0,name:"Plain text",contains:[]};let W={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(i){return W.noHighlightRe.test(i)}function highlight(i,s,u,m){let v="",_="";"object"==typeof s?(v=i,u=s.ignoreIllegals,_=s.language,m=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_=i,v=s);const j={code:v,language:_};fire("before:highlight",j);const M=j.result?j.result:_highlight(j.language,j.code,u,m);return M.code=j.code,fire("after:highlight",M),M}function _highlight(i,s,m,j){function keywordData(i,s){const u=X.case_insensitive?s[0].toLowerCase():s[0];return Object.prototype.hasOwnProperty.call(i.keywords,u)&&i.keywords[u]}function processBuffer(){null!=ee.subLanguage?function processSubLanguage(){if(""===ce)return;let i=null;if("string"==typeof ee.subLanguage){if(!u[ee.subLanguage])return void ae.addText(ce);i=_highlight(ee.subLanguage,ce,!0,ie[ee.subLanguage]),ie[ee.subLanguage]=i.top}else i=highlightAuto(ce,ee.subLanguage.length?ee.subLanguage:null);ee.relevance>0&&(le+=i.relevance),ae.addSublanguage(i.emitter,i.language)}():function processKeywords(){if(!ee.keywords)return void ae.addText(ce);let i=0;ee.keywordPatternRe.lastIndex=0;let s=ee.keywordPatternRe.exec(ce),u="";for(;s;){u+=ce.substring(i,s.index);const m=keywordData(ee,s);if(m){const[i,v]=m;if(ae.addText(u),u="",le+=v,i.startsWith("_"))u+=s[0];else{const u=X.classNameAliases[i]||i;ae.addKeyword(s[0],u)}}else u+=s[0];i=ee.keywordPatternRe.lastIndex,s=ee.keywordPatternRe.exec(ce)}u+=ce.substr(i),ae.addText(u)}(),ce=""}function startNewMode(i){return i.className&&ae.openNode(X.classNameAliases[i.className]||i.className),ee=Object.create(i,{parent:{value:ee}}),ee}function endOfMode(i,s,u){let m=function startsWith(i,s){const u=i&&i.exec(s);return u&&0===u.index}(i.endRe,u);if(m){if(i["on:end"]){const u=new Response(i);i["on:end"](s,u),u.isMatchIgnored&&(m=!1)}if(m){for(;i.endsParent&&i.parent;)i=i.parent;return i}}if(i.endsWithParent)return endOfMode(i.parent,s,u)}function doIgnore(i){return 0===ee.matcher.regexIndex?(ce+=i[0],1):(fe=!0,0)}function doBeginMatch(i){const s=i[0],u=i.rule,m=new Response(u),v=[u.__beforeBegin,u["on:begin"]];for(const u of v)if(u&&(u(i,m),m.isMatchIgnored))return doIgnore(s);return u&&u.endSameAsBegin&&(u.endRe=function escape(i){return new RegExp(i.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(s)),u.skip?ce+=s:(u.excludeBegin&&(ce+=s),processBuffer(),u.returnBegin||u.excludeBegin||(ce=s)),startNewMode(u),u.returnBegin?0:s.length}function doEndMatch(i){const u=i[0],m=s.substr(i.index),v=endOfMode(ee,i,m);if(!v)return qe;const _=ee;_.skip?ce+=u:(_.returnEnd||_.excludeEnd||(ce+=u),processBuffer(),_.excludeEnd&&(ce=u));do{ee.className&&ae.closeNode(),ee.skip||ee.subLanguage||(le+=ee.relevance),ee=ee.parent}while(ee!==v.parent);return v.starts&&(v.endSameAsBegin&&(v.starts.endRe=v.endRe),startNewMode(v.starts)),_.returnEnd?0:u.length}let $={};function processLexeme(u,v){const j=v&&v[0];if(ce+=u,null==j)return processBuffer(),0;if("begin"===$.type&&"end"===v.type&&$.index===v.index&&""===j){if(ce+=s.slice(v.index,v.index+1),!_){const s=new Error("0 width match regex");throw s.languageName=i,s.badRule=$.rule,s}return 1}if($=v,"begin"===v.type)return doBeginMatch(v);if("illegal"===v.type&&!m){const i=new Error('Illegal lexeme "'+j+'" for mode "'+(ee.className||"")+'"');throw i.mode=ee,i}if("end"===v.type){const i=doEndMatch(v);if(i!==qe)return i}if("illegal"===v.type&&""===j)return 1;if(de>1e5&&de>3*v.index){throw new Error("potential infinite loop, way more iterations than matches")}return ce+=j,j.length}const X=getLanguage(i);if(!X)throw error(M.replace("{}",i)),new Error('Unknown language: "'+i+'"');const Y=compileLanguage(X,{plugins:v});let Z="",ee=j||Y;const ie={},ae=new W.__emitter(W);!function processContinuations(){const i=[];for(let s=ee;s!==X;s=s.parent)s.className&&i.unshift(s.className);i.forEach((i=>ae.openNode(i)))}();let ce="",le=0,pe=0,de=0,fe=!1;try{for(ee.matcher.considerAll();;){de++,fe?fe=!1:ee.matcher.considerAll(),ee.matcher.lastIndex=pe;const i=ee.matcher.exec(s);if(!i)break;const u=processLexeme(s.substring(pe,i.index),i);pe=i.index+u}return processLexeme(s.substr(pe)),ae.closeAllNodes(),ae.finalize(),Z=ae.toHTML(),{relevance:Math.floor(le),value:Z,language:i,illegal:!1,emitter:ae,top:ee}}catch(u){if(u.message&&u.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:u.message,context:s.slice(pe-100,pe+100),mode:u.mode},sofar:Z,relevance:0,value:Te(s),emitter:ae};if(_)return{illegal:!1,relevance:0,value:Te(s),emitter:ae,language:i,top:ee,errorRaised:u};throw u}}function highlightAuto(i,s){s=s||W.languages||Object.keys(u);const m=function justTextHighlightResult(i){const s={relevance:0,emitter:new W.__emitter(W),value:Te(i),illegal:!1,top:$};return s.emitter.addText(i),s}(i),v=s.filter(getLanguage).filter(autoDetection).map((s=>_highlight(s,i,!1)));v.unshift(m);const _=v.sort(((i,s)=>{if(i.relevance!==s.relevance)return s.relevance-i.relevance;if(i.language&&s.language){if(getLanguage(i.language).supersetOf===s.language)return 1;if(getLanguage(s.language).supersetOf===i.language)return-1}return 0})),[j,M]=_,X=j;return X.second_best=M,X}const X={"before:highlightElement":({el:i})=>{W.useBR&&(i.innerHTML=i.innerHTML.replace(/\n/g,"").replace(/ /g,"\n"))},"after:highlightElement":({result:i})=>{W.useBR&&(i.value=i.value.replace(/\n/g," "))}},Y=/^(<[^>]+>|\t)+/gm,Z={"after:highlightElement":({result:i})=>{W.tabReplace&&(i.value=i.value.replace(Y,(i=>i.replace(/\t/g,W.tabReplace))))}};function highlightElement(i){let s=null;const u=function blockLanguage(i){let s=i.className+" ";s+=i.parentNode?i.parentNode.className:"";const u=W.languageDetectRe.exec(s);if(u){const s=getLanguage(u[1]);return s||(warn(M.replace("{}",u[1])),warn("Falling back to no-highlight mode for this block.",i)),s?u[1]:"no-highlight"}return s.split(/\s+/).find((i=>shouldNotHighlight(i)||getLanguage(i)))}(i);if(shouldNotHighlight(u))return;fire("before:highlightElement",{el:i,language:u}),s=i;const v=s.textContent,_=u?highlight(v,{language:u,ignoreIllegals:!0}):highlightAuto(v);fire("after:highlightElement",{el:i,result:_,text:v}),i.innerHTML=_.value,function updateClassName(i,s,u){const v=s?m[s]:u;i.classList.add("hljs"),v&&i.classList.add(v)}(i,u,_.language),i.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(i.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let ee=!1;function highlightAll(){if("loading"===document.readyState)return void(ee=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(i){return i=(i||"").toLowerCase(),u[i]||u[m[i]]}function registerAliases(i,{languageName:s}){"string"==typeof i&&(i=[i]),i.forEach((i=>{m[i.toLowerCase()]=s}))}function autoDetection(i){const s=getLanguage(i);return s&&!s.disableAutodetect}function fire(i,s){const u=i;v.forEach((function(i){i[u]&&i[u](s)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){ee&&highlightAll()}),!1),Object.assign(i,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(i){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(i){return W.tabReplace||W.useBR?i.replace(j,(i=>"\n"===i?W.useBR?" ":i:W.tabReplace?i.replace(/\t/g,W.tabReplace):i)):i}(i)},highlightElement,highlightBlock:function deprecateHighlightBlock(i){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(i)},configure:function configure(i){i.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),W=Re(W,i)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),ee=!0},registerLanguage:function registerLanguage(s,m){let v=null;try{v=m(i)}catch(i){if(error("Language definition for '{}' could not be registered.".replace("{}",s)),!_)throw i;error(i),v=$}v.name||(v.name=s),u[s]=v,v.rawDefinition=m.bind(null,i),v.aliases&®isterAliases(v.aliases,{languageName:s})},unregisterLanguage:function unregisterLanguage(i){delete u[i];for(const s of Object.keys(m))m[s]===i&&delete m[s]},listLanguages:function listLanguages(){return Object.keys(u)},getLanguage,registerAliases,requireLanguage:function requireLanguage(i){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const s=getLanguage(i);if(s)return s;throw new Error("The '{}' language is required, but not loaded.".replace("{}",i))},autoDetection,inherit:Re,addPlugin:function addPlugin(i){!function upgradePluginAPI(i){i["before:highlightBlock"]&&!i["before:highlightElement"]&&(i["before:highlightElement"]=s=>{i["before:highlightBlock"](Object.assign({block:s.el},s))}),i["after:highlightBlock"]&&!i["after:highlightElement"]&&(i["after:highlightElement"]=s=>{i["after:highlightBlock"](Object.assign({block:s.el},s))})}(i),v.push(i)},vuePlugin:BuildVuePlugin(i).VuePlugin}),i.debugMode=function(){_=!1},i.safeMode=function(){_=!0},i.versionString="10.7.3";for(const i in we)"object"==typeof we[i]&&s(we[i]);return Object.assign(i,we),i.addPlugin(X),i.addPlugin(Pe),i.addPlugin(Z),i}({});i.exports=ze},61519:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function bash(i){const s={},u={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},u]});const m={className:"subst",begin:/\$\(/,end:/\)/,contains:[i.BACKSLASH_ESCAPE]},v={begin:/<<-?\s*(?=\w+)/,starts:{contains:[i.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},_={className:"string",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE,s,m]};m.contains.push(_);const j={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},i.NUMBER_MODE,s]},M=i.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),$={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[i.inherit(i.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[M,i.SHEBANG(),$,j,i.HASH_COMMENT_MODE,v,_,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},s]}}},30786:i=>{function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function http(i){const s="HTTP/(2|1\\.[01])",u={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},m=[u,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+s+" \\d{3})",end:/$/,contains:[{className:"meta",begin:s},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},{begin:"(?=^[A-Z]+ (.*?) "+s+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:s},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:m}},i.inherit(u,{relevance:0})]}}},96344:i=>{const s="[A-Za-z$_][0-9A-Za-z$_]*",u=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],m=["true","false","null","undefined","NaN","Infinity"],v=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>function source(i){return i?"string"==typeof i?i:i.source:null}(i))).join("")}i.exports=function javascript(i){const _=s,j="<>",M=">",$={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(i,s)=>{const u=i[0].length+i.index,m=i.input[u];"<"!==m?">"===m&&(((i,{after:s})=>{const u=""+i[0].slice(1);return-1!==i.input.indexOf(u,s)})(i,{after:u})||s.ignoreMatch()):s.ignoreMatch()}},W={$pattern:s,keyword:u,literal:m,built_in:v},X="[0-9](_?[0-9])*",Y=`\\.(${X})`,Z="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",ee={className:"number",variants:[{begin:`(\\b(${Z})((${Y})|\\.)?|(${Y}))[eE][+-]?(${X})\\b`},{begin:`\\b(${Z})\\b((${Y})\\b|\\.)?|(${Y})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},ie={className:"subst",begin:"\\$\\{",end:"\\}",keywords:W,contains:[]},ae={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[i.BACKSLASH_ESCAPE,ie],subLanguage:"xml"}},ce={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[i.BACKSLASH_ESCAPE,ie],subLanguage:"css"}},le={className:"string",begin:"`",end:"`",contains:[i.BACKSLASH_ESCAPE,ie]},pe={className:"comment",variants:[i.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:_+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),i.C_BLOCK_COMMENT_MODE,i.C_LINE_COMMENT_MODE]},de=[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,ae,ce,le,ee,i.REGEXP_MODE];ie.contains=de.concat({begin:/\{/,end:/\}/,keywords:W,contains:["self"].concat(de)});const fe=[].concat(pe,ie.contains),ye=fe.concat([{begin:/\(/,end:/\)/,keywords:W,contains:["self"].concat(fe)}]),be={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,contains:ye};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:W,exports:{PARAMS_CONTAINS:ye},illegal:/#(?![$_A-z])/,contains:[i.SHEBANG({label:"shebang",binary:"node",relevance:5}),{label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,ae,ce,le,pe,ee,{begin:concat(/[{,\n]\s*/,lookahead(concat(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,_+"\\s*:"))),relevance:0,contains:[{className:"attr",begin:_+lookahead("\\s*:"),relevance:0}]},{begin:"("+i.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[pe,i.REGEXP_MODE,{className:"function",begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+i.UNDERSCORE_IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:W,contains:ye}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:j,end:M},{begin:$.begin,"on:begin":$.isTrulyOpeningTag,end:$.end}],subLanguage:"xml",contains:[{begin:$.begin,end:$.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:W,contains:["self",i.inherit(i.TITLE_MODE,{begin:_}),be],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[be,i.inherit(i.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:_}),"self",be]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[i.inherit(i.TITLE_MODE,{begin:_}),{begin:/\(\)/},be]},{begin:/\$[(.]/}]}}},82026:i=>{i.exports=function json(i){const s={literal:"true false null"},u=[i.C_LINE_COMMENT_MODE,i.C_BLOCK_COMMENT_MODE],m=[i.QUOTE_STRING_MODE,i.C_NUMBER_MODE],v={end:",",endsWithParent:!0,excludeEnd:!0,contains:m,keywords:s},_={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[i.BACKSLASH_ESCAPE],illegal:"\\n"},i.inherit(v,{begin:/:/})].concat(u),illegal:"\\S"},j={begin:"\\[",end:"\\]",contains:[i.inherit(v)],illegal:"\\S"};return m.push(_,j),u.forEach((function(i){m.push(i)})),{name:"JSON",contains:m,keywords:s,illegal:"\\S"}}},66336:i=>{i.exports=function powershell(i){const s={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},u={begin:"`[\\s\\S]",relevance:0},m={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},v={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[u,m,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},_={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},j=i.inherit(i.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),M={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},$={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[i.TITLE_MODE]},W={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[m]}]},X={begin:/using\s/,end:/$/,returnBegin:!0,contains:[v,_,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},Y={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},Z={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(s.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},i.inherit(i.TITLE_MODE,{endsParent:!0})]},ee=[Z,j,u,i.NUMBER_MODE,v,_,M,m,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],ie={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",ee,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return Z.contains.unshift(ie),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:s,contains:ee.concat($,W,X,Y,ie)}}},42157:i=>{function source(i){return i?"string"==typeof i?i:i.source:null}function lookahead(i){return concat("(?=",i,")")}function concat(...i){return i.map((i=>source(i))).join("")}function either(...i){return"("+i.map((i=>source(i))).join("|")+")"}i.exports=function xml(i){const s=concat(/[A-Z_]/,function optional(i){return concat("(",i,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),u={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},m={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},v=i.inherit(m,{begin:/\(/,end:/\)/}),_=i.inherit(i.APOS_STRING_MODE,{className:"meta-string"}),j=i.inherit(i.QUOTE_STRING_MODE,{className:"meta-string"}),M={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:/[A-Za-z0-9._:-]+/,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[u]},{begin:/'/,end:/'/,contains:[u]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[m,j,_,v,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[m,v,j,_]}]}]},i.COMMENT(//,{relevance:10}),{begin://,relevance:10},u,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/